項目場景:
小游戲程序,本地環(huán)境能正常運行
程序調(diào)用了wav文件,即音效資源文件
程序調(diào)用wav路徑正確,也是采用絕對路徑
問題描述:
程序制作完成后,進(jìn)行了以下三步打包操作:
1、生成spec文件
在需要打包的程序的目錄上,我進(jìn)入終端輸入以下命令進(jìn)行打包:
pyinstaller -F -w snake.py
2、修改spec文件
2.1、打開生成的snake.spec文件
2.2、修改Analysis 的 pathex(程序所在目錄的路徑).
2.3、修改Analysis 的 datas(調(diào)用文件的路徑).
a = Analysis(
['snake.py'],
pathex=['C:\\Users\xxx\\PycharmProjects\\pythonProject1'],
binaries=[],
datas=[('C:\\Users\xxx\\PycharmProjects\\pythonProject1\\貓咪吃東西.wav')],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
3、生成exe文件(報錯)
3.1、使用打包命令:
pyinstaller snake.spec
3.2、報錯提示如下:
C:\Users\xxx\PycharmProjects\pythonProject1>pyinstaller snake.spec
309 INFO: PyInstaller: 5.10.0
309 INFO: Python: 3.7.4
310 INFO: Platform: Windows-10-10.0.22621-SP0
312 INFO: UPX is not available.
313 INFO: Extending PYTHONPATH with paths
['C:\\Users\\xxx\\PycharmProjects\\pythonProject1']
pygame 2.1.2 (SDL 2.0.18, Python 3.7.4)
Hello from the pygame community. https://www.pygame.org/contribute.html
896 INFO: checking Analysis
913 INFO: checking PYZ
927 INFO: checking PKG
931 INFO: Bootloader C:\Users\xxx\AppData\Roaming\Python\Python37\site-packages\PyInstaller\bootloader\Windows-64bit-intel\runw.exe
931 INFO: checking EXE
原因分析:
打包spec文件時報錯,有兩種可能:
1、生成的spec文件有問題
2、修改的spec文件有問題
解決方案:
根據(jù)上述分析,首先需要進(jìn)行一項測試。確認(rèn)生成spec文件正常!
一、不修改spec文件(正常)
跳過第二步打包操作,查看是否能生成exe文件。
二、修改spec文件(解決)
既然不修改spec文件,能正常打包就說明是我修改spec操作不對!
1、查閱資料
-
scripts
:命令行中命名的 python 腳本; -
pure
:腳本所需的純 python 模塊; -
pathex
:用于搜索導(dǎo)入的路徑列表(如 using?),包括選項給出的路徑。 -
binaries
:腳本所需的非 Python 模塊,包括名稱 由選項給出; -
datas
:應(yīng)用程序中包含的非二進(jìn)制文件,包括給定的名稱 通過選項。datas 采用元組(A,B):A,要打包的文件目錄,B, 解壓后該文件存放的目錄(以 main.exe 解壓目錄為根)。
2、結(jié)論
我的問題是spec文件Analysis 的 datas少了目標(biāo)路徑。修改后成功生成exe,且功能正常!
修改代碼如下:
a = Analysis(
['snake.py'],
pathex=['C:\\Users\xxx\\PycharmProjects\\pythonProject1'],
binaries=[],
datas=[('C:\\Users\xxx\\PycharmProjects\\pythonProject1\\貓咪吃東西.wav', '.')],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
總結(jié):
也許朋友使用pyinstaller報錯的原因與我不同,但是朋友也可以根據(jù)以下步驟尋找答案:
1、前提
本地環(huán)境python運行正常,調(diào)用文件的路徑正確(絕對路徑)
2、測試
在需要打包的程序的目錄上,依次輸入如下打包命令:
pyinstaller -F -w xxx.py
pyinstaller xxx.spec
3、結(jié)論
如果能正常生成exe,只不過運行報錯,那么正確修改spec就行
反之pyinstaller程序有誤,建議重新下載正確版本
下一篇:python pyinstaller打包常見問題(二):No file找不到文件解決辦法
如果還是解決不了問題的話,可以評論區(qū)聯(lián)系我。文章來源:http://www.zghlxwxcb.cn/news/detail-815831.html
????????文章來源地址http://www.zghlxwxcb.cn/news/detail-815831.html
到了這里,關(guān)于python pyinstaller打包常見問題(一):無法生成exe文件/打包閃退的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!