pyinstaller打包exe軟件並解決 Pyinstaller failed to execute script main問題(用了sklearn庫)

一、基本的操作

pyinstaller -F --noconsole ***.py -n 軟件名字 -i 1.ico

-F 參數是打包後,只留下一個.exe的可執行文件
默認情況下的參數是 -D 打包後在dist目錄有多個依賴文件(但是用D啓動會快一些)
–noconsole 參數是運行時不顯示控制檯的意思,一般是 -w ,但是我w無法運行(注意這裏兩個–不是手誤)
-n 另外還可以使用 -n *** 的方式確定exe的文件名,如 -n 我的第一個exe程序
-i 顯然是icon圖標

二、出現問題 Pyinstaller failed to execute script main

首先確保原來的程序是可以運行的,然後這就是在命令行窗口啓動這個程序看一下報錯,參考了這個方法:https://blog.csdn.net/sxf1061700625/article/details/99713613

1、取消 -w 參數,讓他顯示命令窗口;
2、按住shift,右擊鼠標,選擇 “在此處打開powershell”(或命令窗口);
3、將生成的exe拖入,按回車;
4、可以看到具體的報錯信息;
5、如果是“unable to find Qt5xx.dll”,就將Python安裝路徑下的/Lib/site-packages/PyQt5/Qt/bin添加到環境變量;
6、如果是“no module xxx”,就pip install安裝對應的模塊;

然後最後一行果然報錯,ModuleNotFoundError: No module named 'sklearn.utils._cython_blas',怎麼又是sklearn相關的問題呢。
在這裏插入圖片描述然後在這裏看到了解答:https://stackoverflow.com/questions/57108026/pyinstaller-modulenotfounderror-no-module-named-sklearn-utils-cython-blas
也就是引入缺少的這一部分變量:pyinstaller -D --noconsole --hidden-import="sklearn.utils._cython_blas" --hidden-import="sklearn.neighbors.typedefs" --hidden-import="sklearn.neighbors.quad_tree" --hidden-import="sklearn.tree._utils" main.py -n 水泵檢測系統
然後因爲我的軟件裏有一個讀取特定的Excel文件,因此還得把這個Excel文件放在exe當前目錄下面,即可運行。

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