總結Pyinstaller的坑及終極解決方法
阿新 • • 發佈:2019-02-14
一. 首先要有個穩定環境
- 下面是博主經測試的覺得坑比較少的環境搭配
- Python3.4 + PyQt5.4 + Pyinstaller3.2.1
- Python3.5 + PyQt5.8 + Pyinstaller3.2.1
二. Pyinstaller遇到坑沒必要換打包工具
- 博主好幾次用Pyinstaller遇到坑時都有考慮換工具如py2exe或cx-freeze之類的, 依舊無法解決 (最後還是用pyinstaller解決了)
- 所以沒必要換其他工具, pyinstaller就夠了
三. 坑1: 打包不了, 連exe都生成不出來
解決方法
- 直接換Pyinstaller的版本, 即卸掉重灌, 推薦用3.2.1
四. 坑2: exe生成了, 但是跑不了
- 大多數情況都是被坑在這裡
解決方法
- 遇到這種問題不管彈出什麼樣的錯誤提示, 在輸出exe時引數加個’-d’即debug模式, 然後開啟的時候能看到列印的錯誤資訊了, 這招很好用
- 留意一下程式依賴的一些資原始檔, 檢查下路徑是否正確, 特別是程式裡有相對路徑的; 還有一些涉及到依賴系統預設資源的如預設字型啥的, 也得留意
- 換下打包方式, 如onefile模式和onedir模式 (之前出現過onedir打包可以但onefile打包不行的情況)
- 環境變數PATH中加上PyQt5的plugins的路徑
- 依舊不行則換個Pyinstaller的版本, 即卸掉重灌, 推薦用3.2.1
- 再不行則換作業系統試試, 有win10跑得了但到了win7就跑不了的情況 (弄個虛擬機器測下找下問題在哪)
五. 錯誤碼集錦
main return -1
- 這種錯誤基本都是自己的問題, 只能在輸出exe時引數加個’-d’即debug模式, 然後再查下列印的錯誤資訊
Failed to execute script pyi_rth_pkgres
- 可以先換Pyinstaller的版本, 這個錯誤會消失, 但會彈出其他的錯誤資訊, 然並卵
- 這種錯誤基本都是自己的問題, 只能在輸出exe時引數加個’-d’即debug模式, 然後再查下列印的錯誤資訊
Failed to execute script xxxx
- 這種錯誤基本都是自己的問題, 只能在輸出exe時引數加個’-d’即debug模式, 然後再查下列印的錯誤資訊
This application failed to start … Qt platform plugin …
- 這種錯誤先配下PyQt5的plugins的環境變數, 如博主的是C:\Python34\Lib\site-packages\PyQt5\plugins
- 不行再換Pyinstaller的版本 (貌似3.0.0這個版本有問題, 後來換3.2.1就沒事了)