首先需要使用以下命令生成spec文件:
pyi-makespec main.py ## 生成main.spec
打開生成main.spec文件,詳解如下:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['src\\main.py'], ### 工程入口文件
pathex=['src\\module1.py', 'src\\module2.py'], ### 工程裏其他的相關的py文件都放在這裏
binaries=[],
datas=[], ### 在打包時希望拷貝到生成的文件下的內容,可以時庫文件,也可以時各種資源文件,每個元素格式爲: ("當前資源路徑", "拷貝後資源路徑(相對路徑)")
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='main', ### 生成的可執行文件名字
debug=False, ### 是否設置爲調試模式
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True, ### 是否需要控制檯
icon='test.icon') ### exe文件的圖標
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='main') ###打包後的文件夾名字
然後執行:
pyinstaller -F main.spec
會生成兩個文件夾,build和dist。build文件夾似乎沒什麼用,生成核心內容在dist文件夾下。
容易發生的錯誤及解決方法:
-
failed to execute script
這個錯誤需要設置爲調試模式,然後在控制檯運行生成的exe文件方可確定。可根據具體報錯log檢查爲什麼失敗。設置調試模式的方法時在spec文件中將debug的值改爲True -
設置的圖標顯示失敗
需要時icon格式的圖標,而且系統對可執行文件圖標的大小有要求,需要將圖標大小轉換爲系統支持的大小