安裝pyinstaller:pip install pyinstaller
使用基本命令
常見問題
1、打包後文件大小
-
通常python打包爲可執行文件都會得到一個較大的包,這是無法避免的,但是我們還是可以通過一些方法來儘量精簡打包後的執行程序:在代碼中減少不必要的import,如from xxx import *
-
在精簡的運行環境(如原生python環境)下打包,缺什麼包就下什麼包,避免不必要的python包被打包入程序。尤其是anaconda這樣的集成環境下打包的結果會大很多。
2、No module named ‘xxx’
>>解決方法1:
>>解決方法2:
-
Analysis以py文件爲輸入,它會分析py文件的依賴模塊,並生成相應的信息
-
PYZ是一個.pyz的壓縮包,包含程序運行需要的所有依賴
-
EXE根據上面兩項生成
-
COLLECT生成其他部分的輸出文件夾,COLLECT也可以沒有
pyinstaller在進行打包時,會解析打包的python文件,自動尋找py源文件的依賴模塊。但是pyinstaller解析模塊時可能會遺漏某些模塊(not visible to the analysis phase),造成打包後執行程序時出現類似No Module named xxx。打開.spec文件,添加缺少的module。
3、Failed to execute scipt
原因:出現上圖的錯誤,可能是曾經的打包參數的文件信息還在, 打包可能就會遇到問題。也可能是缺少某個module造成的
解覺方法:依次刪除build、dist、xxx.spec這三個用於存儲打包配置的文件,再重新打包。如果還是報錯,查看錯誤信息,一般是缺少某個module造成的,具體見問題2