pyinstaller打包程序exe踩過(guò)的坑
基礎(chǔ)環(huán)境
- python 2.7.17
- pyinstaller 3.5
安裝pyinstaller
pip install pyinstaller
坑,大坑,深坑
背景:用pygame寫(xiě)了個(gè)貪吃蛇游戲,要打包成exe
用到了字體文件 C:\Windows\Fonts\simsun.ttc (宋體)
打包過(guò)程中沒(méi)有報(bào)錯(cuò)
打包過(guò)程中的警告可以忽略,這個(gè)警告: WARNING: Hidden import “pygame._view” not found!
運(yùn)行exe的時(shí)候報(bào)NotImplementedError: Can't perform this operation for unregistered loader type
真的是百思不得其姐,為什么會(huì)報(bào)這個(gè)錯(cuò)????
最終確定,是找不到引用的字體文件,需要指定下,添加如下代碼:
def rp(relative_path): """ Get absolute path to resource, works for dev and for PyInstaller """ try: # PyInstaller creates a temp folder and stores path in _MEIPASS base_path = sys._MEIPASS except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path)
并且每個(gè)文件都要使用該函數(shù)轉(zhuǎn)換下地址
BASICFONT = pygame.font.Font(rp('C:\Windows\Fonts\simsun.ttc'), 18) titleFont = pygame.font.Font(rp('C:\Windows\Fonts\simsun.ttc'), 100) gameOverFont = pygame.font.Font(rp('freesansbold.ttf'), 100)
再次pyinstaller -F xxx.py
生成單個(gè)exe后,就可以直接運(yùn)行不會(huì)報(bào)錯(cuò)了
上邊解決了可能是巧合,因?yàn)槊總€(gè)人電腦上都有這個(gè)字體
再來(lái)個(gè)圖片的,其他電腦上就沒(méi)有了
首先,還是那個(gè)函數(shù)需要加到代碼里
def rp(relative_path): """ Get absolute path to resource, works for dev and for PyInstaller """ try: # PyInstaller creates a temp folder and stores path in _MEIPASS base_path = sys._MEIPASS except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path)
再者,把src目錄下的background.jpg用上方的函數(shù)轉(zhuǎn)換下地址,同時(shí)打印下地址以觀后效
bgimg = rp(os.path.join('src','background.jpg')) print(bgimg)
使用 pyi-makespec -F 2048.py命令生成spec文件,修改文件內(nèi)容如下:
指定src目錄打包到exe中,運(yùn)行時(shí)生成的臨時(shí)路徑也叫src
指定命令打包:pyinstaller -F 2048.spec
把2048.exe挪到另一個(gè)位置,跑一下看看cmd輸出
生成的臨時(shí)路徑也叫src,且能找到我們的圖片。
這時(shí)候還是不確定,我們換臺(tái)機(jī)器跑下試試
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- pyinstaller打包exe程序的步驟和添加依賴(lài)文件的實(shí)現(xiàn)
- 用python打包exe應(yīng)用程序及PyInstaller安裝方式
- python3.9實(shí)現(xiàn)pyinstaller打包python文件成exe
- PyInstaller將Python文件打包為exe后如何反編譯(破解源碼)以及防止反編譯
- python GUI庫(kù)圖形界面開(kāi)發(fā)之pyinstaller打包python程序?yàn)閑xe安裝文件
- python pyinstaller打包exe報(bào)錯(cuò)的解決方法
- python非單一.py文件用Pyinstaller打包發(fā)布成exe
相關(guān)文章
Python讀取txt文件數(shù)據(jù)的方法(用于接口自動(dòng)化參數(shù)化數(shù)據(jù))
這篇文章主要介紹了Python讀取txt文件數(shù)據(jù)的方法(用于接口自動(dòng)化參數(shù)化數(shù)據(jù)),需要的朋友可以參考下2018-06-06Python實(shí)例解析圖像形態(tài)學(xué)運(yùn)算技術(shù)
形態(tài)學(xué)處理方法是基于對(duì)二進(jìn)制圖像進(jìn)行處理的,卷積核決定圖像處理后的效果。本文將為大家詳細(xì)介紹一下OpenCV中的圖像形態(tài)學(xué),感興趣的可以了解一下2022-03-03Python實(shí)現(xiàn)快速查找并替換Excel中的數(shù)據(jù)
Excel中的查找替換是一個(gè)非常實(shí)用的功能,能夠幫助用戶快速完成大量數(shù)據(jù)的整理和處理工作,避免手動(dòng)逐一修改數(shù)據(jù)的麻煩,提高工作效率,所以本文給大家介紹了Python實(shí)現(xiàn)快速查找并替換Excel中的數(shù)據(jù),需要的朋友可以參考下2024-06-06使用Python制作讀單詞視頻的實(shí)現(xiàn)代碼
我們經(jīng)常在B站或其他視頻網(wǎng)站上看到那種逐條讀單詞的視頻,但他們的視頻多多少少和我們的預(yù)期都不太一致,然而,網(wǎng)上很難找到和自己需求符合的視頻,所以本文給大家介紹了使用Python制作讀單詞視頻的實(shí)現(xiàn),需要的朋友可以參考下2024-04-04python單元測(cè)試框架unittest基本用法案例
unittest庫(kù)unittest庫(kù)是python的內(nèi)置庫(kù),用來(lái)對(duì)程序進(jìn)行測(cè)試,下面這篇文章主要給大家介紹了關(guān)于python中單元測(cè)試框架unittest基本用法的相關(guān)資料,需要的朋友可以參考下2022-09-09Python開(kāi)發(fā)微信公眾平臺(tái)的方法詳解【基于weixin-knife】
這篇文章主要介紹了Python開(kāi)發(fā)微信公眾平臺(tái)的方法,結(jié)合實(shí)例形式分析了Python基于weixin-knife針對(duì)微信公眾平臺(tái)消息、接口調(diào)用及事件處理的基本操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-07-07asyncio 的 coroutine對(duì)象 與 Future對(duì)象使用指南
asyncio是Python 3.4版本引入的標(biāo)準(zhǔn)庫(kù),直接內(nèi)置了對(duì)異步IO的支持。asyncio的編程模型就是一個(gè)消息循環(huán)。今天我們就來(lái)詳細(xì)討論下asyncio 中的 coroutine 與 Future對(duì)象2016-09-09yolov5 win10 CPU與GPU環(huán)境搭建過(guò)程
這篇文章主要介紹了yolov5 win10 CPU與GPU環(huán)境搭建過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04