1. 程式人生 > >總結Pyinstaller的坑及終極解決方法

總結Pyinstaller的坑及終極解決方法

一. 首先要有個穩定環境

  • 下面是博主經測試的覺得坑比較少的環境搭配
    1. Python3.4 + PyQt5.4 + Pyinstaller3.2.1
    2. Python3.5 + PyQt5.8 + Pyinstaller3.2.1

二. Pyinstaller遇到坑沒必要換打包工具

  • 博主好幾次用Pyinstaller遇到坑時都有考慮換工具如py2exe或cx-freeze之類的, 依舊無法解決 (最後還是用pyinstaller解決了)
  • 所以沒必要換其他工具, pyinstaller就夠了

三. 坑1: 打包不了, 連exe都生成不出來

解決方法

  • 直接換Pyinstaller的版本, 即卸掉重灌, 推薦用3.2.1

四. 坑2: exe生成了, 但是跑不了

  • 大多數情況都是被坑在這裡

解決方法

  1. 遇到這種問題不管彈出什麼樣的錯誤提示, 在輸出exe時引數加個’-d’即debug模式, 然後開啟的時候能看到列印的錯誤資訊了, 這招很好用
  2. 留意一下程式依賴的一些資原始檔, 檢查下路徑是否正確, 特別是程式裡有相對路徑的; 還有一些涉及到依賴系統預設資源的如預設字型啥的, 也得留意
  3. 換下打包方式, 如onefile模式和onedir模式 (之前出現過onedir打包可以但onefile打包不行的情況)
  4. 環境變數PATH中加上PyQt5的plugins的路徑
  5. 依舊不行則換個Pyinstaller的版本, 即卸掉重灌, 推薦用3.2.1
  6. 再不行則換作業系統試試, 有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就沒事了)