pyinstaller failed to execute script

打包

tips:歡迎大家收藏我的WordPress: http://www.jnxcc.top/
例子使用pachonggui.py

  1. 正常執行一遍
pyinstaller -Fw pachonggui.py
  1. 給腳本加一行代碼
import PyQt5.sip

然後再執行同樣的命令

pyinstaller -Fw pachonggui.py
  1. 刪掉import PyQt5.sip,可以繼續寫代碼了。如果要打包,從1開始

出現failed to execute script的排查方法

法一:

命令執行完畢之後 build\pachonggui\warnpachonggui.txt,上面會記載着錯誤

法二:

# 使用完下面這條指令之後,打開exe,提示failed to execute script
pyinstaller -Fw pachonggui.py
# 然後執行下面這條執行,會在list下生成一個目錄,進入該目錄,用**命令行**執行該exe,就會看到錯誤了
pyinstaller -D pachonggui.py
pyinstaller打包使用pyqt5模塊的時候,在win平臺下,由於pyinstaller無法準確獲取QT動態庫文件路徑,會報錯導致無法打開運行程序,並提示錯誤信息pyinstaller failed to execute script pyi_rth_qt5plugins此時我們需要在打包的時候直接告訴pyinstaller到哪裏去找,這個路徑分隔符需要是unix形式:

pyinstaller --paths C:/****/Python/Python35-32/Lib/site-packages/PyQt5/Qt/bin -F -w ****.py

pyqt5打包問題經過

這裏用到的文件是pachonggui.py,裏面使用了pyqt5 的庫

安裝好pyinstaller後,先使用下面的命令對腳本進行打包

pyinstaller.exe -Fw .\pachonggui.py

執行完畢,生成兩個目錄

exe文件在dist目錄下

雙擊運行出現Failed to execute script pachonggui錯誤

先去build目錄那裏,找到warn***.txt文件,裏面會記錄一些錯誤

這裏可以看到,pyqt5的庫沒有找到

分析:正常來說,如果pyinstallerpip3安裝好的,那麼pyqt5應該也在同一個目錄下,應該不會出現找不到路徑的情況.所以說,有兩種情況,一個是pyinstaller錯了,一個是pyqt5錯了,這裏我先指定pyqt5的路徑讓它試試

找到python3的安裝路徑,我的是如下

然後使用--path 指定庫目錄,有一點需要注意:這裏用的是/作爲目錄分隔符,而不是\

pyinstaller.exe --path E:/Python/Python36-32/Lib/site-packages/PyQt5/Qt/bin -Fw .\pachonggui.
py

重新打包之後,再次運行,報同樣的錯誤,看build目錄下的warn***.txt文件,還是同樣的,沒有找到PyQt5的庫

因爲本人安裝了python2.7python3.6,但是我只給python2.7配置了環境變量,所以說,命令行那裏的pyinstallerpython27目錄下的,而不是python36-32目錄下的,所以說,接下來,我命令提示符那裏指定使用python36-32下的pyinstaller試試

執行打包命令之後,看到命令提示符,多了一些東西sip not found,不管它先,先記下來,然後繼續運行一下exe

沒錯,還是這個錯誤… …

看一下warn***.txt

發現pyqt5已經成功導入了,說明之前的錯誤原因真是因爲調用了python27pyinstaller,指定使用python36-32下的pyinstaller就沒毛病了

這時候的warn***.txt是一大堆的看不懂的東西… …怎麼辦?

沒關係,還有辦法,使用-D指令,將這個exe弄成一個目錄,然後使用命令行去運行新目錄下的exe,然後你應該會看到報錯誤了

E:\Python\Python36-32\Scripts\pyinstaller.exe -D .\pachonggui.py

這時候dist目錄下會多一個目錄pachonggui

然後,在這裏,我需要使用命令提示符去運行這個exe

結果如下:

… …PyQt5.sip是什麼東東???我代碼裏面沒有用到啊!!!~~~

在這種情況下,我決定,手動在代碼裏面加入它,然後再執行一次打包命令

不明白爲什麼提示sip not found還在,但是,這時候,exe已經可以運行,沒有bug了

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