用pyinstaller 打包程序碰到的問題和解決方法(scipy...)

一、打包程序庫選擇

  1. py2exe. 不支持python3

  2. cx_Freeze. 現在只更新到python3.3

  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

繼續打包,終於成功,所有問題全部解決。

四、附錄

  1. python版本3.6.6
  2. scipy版本1.1.0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章