一、打包程序庫選擇
-
py2exe. 不支持python3
-
cx_Freeze. 現在只更新到python3.3
-
pyinstaller. 支持python2、python3所有版本
因爲現在使用的版本是python3.6,所以沒得選擇,只能使用pyinstaller。另外百度了一圈,pyinstaller還是比較好用的。
二、安裝和使用
用pip安裝就可以了。
pip install pyinstaller
沒有提示任何出錯信息,沒啥好寫的。
基本使用方法:
pyinstaller -F XXXX.py
cd命令跳轉至程序目錄,XXXX.py是要打包的主文件,其他引用文件會一起打包。
pyinstaller -F -w -i XXXX.ico XXXX.py
-w選項不帶命令行窗口,-i選項是程序圖標。
三、出現的問題
用上面的命令打包,過程比較順利,也顯示以下結果信息。
但是運行打包好的程序時,出現以下錯誤信息:
ImportError: DLL load failed: 找不到指定的模塊。
[6772] Failed to execute script calc_similar_gui錯誤。
對以上錯誤信息進行分析,發現是scipy裏的一些模塊找不到。
又分析打包時出現的一些警告,
參考網上的解決方法把/lib/site-packages/scipy/extra-dll/ 的所有.dll複製到要打包的目錄下。
然後重新打包,發現WARNING提示信息已消失。
運行重新打包的.exe程序,結果又出現新的錯誤信息:
ModuleNotFoundError: No module named 'scipy._lib.messagestream'
[6656] Failed to execute script calc_similar_gui
結合ImportError when importing certain modules from SciPY這個問題的解決方法在/scipy/__init__.py文件的底部添加
from scipy._lib import messagestream
繼續打包,終於成功,所有問題全部解決。
四、附錄
- python版本3.6.6
- scipy版本1.1.0