pyinstaller程式打包問題及解決方案
關於如何安裝pyinstaller庫,參看如何打包python為exe檔案 。這裡我們提問題及解決方案。
問題1:pandas庫無法打包
解決方案:建hook解決
1.在../Pyinstaller/hooks目錄下新建檔案hook-pandas.py並寫入內容
hiddenimports = [ #all your previous hidden imports 'pandas' , 'pandas.libs.tslibs.timedeltas' ]
說明:這裡--hidden-import是程式需要的包,但是沒有被打包進來。這裡錯誤最多,當然不止pandas,但是這個pandas不改基本上必錯,因為一般第三方庫隱式呼叫其他包,然後打包出來的程式就顯示Fate Error無法執行。也就是說你呼叫的第三方庫(如pandas)他自己也調了其他庫(numpy),但你自己程式裡面沒有呼叫numpy,那麼就Error了。
2.重新執行pyinstaller,問題解決
(也可以不用此法,直接在pyinstaller命令中新增,具體命令如:
pyinstaller -F test.py --hidden-import=pandas._libs.tslibs.timedeltas
)
問題2:AttributeError:'str'object has no attribute 'items'
解決方案:更新setuptools
1.cmd下解除安裝該庫
pip uninstall setuptools
2.cmd下安裝該庫最新版本
pip install setuptools(預設最新)
問題3:Cannot find existing PyQt5 plugin directories
解決方案:可能是缺少依賴項,對其重新安裝
1.pip list檢視已有的qt包
2.如果沒有,重新安裝即可
pip install pyqt5
問題4:UnicodeDecodeError:'utf-8' code can't decode byte 0xXX in position XX'
解決方案:chcp 65001
1.在打包的命令列下,輸入
chcp 65001
2.執行打包命令
pyinstaller -F xxx.py
說明:在中文windows系統中,如果一個文字檔案是utf-8編碼的,那麼在cmd(DOS視窗)中不能正確顯示檔案中的內容。在預設情況下,命令列視窗中使用的內碼表是中文或美國英語,即編碼是中文字符集或者西文字符集。如果想正確顯示UTF8字元,就必須使用chcp命令改變內碼表,而utf8的內碼表為65001。