打包
tips:歡迎大家收藏我的WordPress: http://www.jnxcc.top/
例子使用pachonggui.py
- 正常執行一遍
pyinstaller -Fw pachonggui.py
- 給腳本加一行代碼
import PyQt5.sip
然後再執行同樣的命令
pyinstaller -Fw pachonggui.py
- 刪掉
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
的庫沒有找到
分析:正常來說,如果pyinstaller
是pip3
安裝好的,那麼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.7
和python3.6
,但是我只給python2.7配置了環境變量,所以說,命令行那裏的pyinstaller
是python27
目錄下的,而不是python36-32
目錄下的,所以說,接下來,我命令提示符那裏指定使用python36-32
下的pyinstaller
試試
執行打包命令之後,看到命令提示符,多了一些東西sip not found
,不管它先,先記下來,然後繼續運行一下exe
沒錯,還是這個錯誤… …
看一下warn***.txt
發現pyqt5已經成功導入了,說明之前的錯誤原因真是因爲調用了python27
的pyinstaller
,指定使用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了