PyQt5 打包

打包

例子使用pachonggui.py

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

然后再執(zhí)行同樣的命令

pyinstaller -Fw pachonggui.py
  1. 刪掉import PyQt5.sip,可以繼續(xù)寫(xiě)代碼了。如果要打包,從1開(kāi)始

出現(xiàn)failed to execute script的排查方法

法一:

命令執(zhí)行完畢之后 build\pachonggui\warnpachonggui.txt,上面會(huì)記載著錯(cuò)誤

法二:

# 使用完下面這條指令之后,打開(kāi)exe,提示failed to execute script
pyinstaller -Fw pachonggui.py
# 然后執(zhí)行下面這條執(zhí)行,會(huì)在list下生成一個(gè)目錄,進(jìn)入該目錄,用**命令行**執(zhí)行該exe,就會(huì)看到錯(cuò)誤了
pyinstaller -D pachonggui.py
pyinstaller打包使用pyqt5模塊的時(shí)候,在win平臺(tái)下,由于pyinstaller無(wú)法準(zhǔn)確獲取QT動(dòng)態(tài)庫(kù)文件路徑,會(huì)報(bào)錯(cuò)導(dǎo)致無(wú)法打開(kāi)運(yùn)行程序,并提示錯(cuò)誤信息pyinstaller failed to execute script pyi_rth_qt5plugins此時(shí)我們需要在打包的時(shí)候直接告訴pyinstaller到哪里去找,這個(gè)路徑分隔符需要是unix形式:

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

pyqt5打包問(wèn)題經(jīng)過(guò)

這里用到的文件是pachonggui.py,里面使用了pyqt5 的庫(kù)

安裝好pyinstaller后,先使用下面的命令對(duì)腳本進(jìn)行打包

pyinstaller.exe -Fw .\pachonggui.py
image

執(zhí)行完畢,生成兩個(gè)目錄

image

exe文件在dist目錄下

雙擊運(yùn)行出現(xiàn)Failed to execute script pachonggui錯(cuò)誤

image

先去build目錄那里,找到warn***.txt文件,里面會(huì)記錄一些錯(cuò)誤

image

這里可以看到,pyqt5的庫(kù)沒(méi)有找到

分析:正常來(lái)說(shuō),如果pyinstallerpip3安裝好的,那么pyqt5應(yīng)該也在同一個(gè)目錄下,應(yīng)該不會(huì)出現(xiàn)找不到路徑的情況.所以說(shuō),有兩種情況,一個(gè)是pyinstaller錯(cuò)了,一個(gè)是pyqt5錯(cuò)了,這里我先指定pyqt5的路徑讓它試試

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

image

然后使用--path 指定庫(kù)目錄,有一點(diǎn)需要注意:這里用的是/作為目錄分隔符,而不是\

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

重新打包之后,再次運(yùn)行,報(bào)同樣的錯(cuò)誤,看build目錄下的warn***.txt文件,還是同樣的,沒(méi)有找到PyQt5的庫(kù)

因?yàn)楸救税惭b了python2.7python3.6,但是我只給python2.7配置了環(huán)境變量,所以說(shuō),命令行那里的pyinstallerpython27目錄下的,而不是python36-32目錄下的,所以說(shuō),接下來(lái),我命令提示符那里指定使用python36-32下的pyinstaller試試

image

執(zhí)行打包命令之后,看到命令提示符,多了一些東西sip not found,不管它先,先記下來(lái),然后繼續(xù)運(yùn)行一下exe

image

沒(méi)錯(cuò),還是這個(gè)錯(cuò)誤... ...

看一下warn***.txt

image

發(fā)現(xiàn)pyqt5已經(jīng)成功導(dǎo)入了,說(shuō)明之前的錯(cuò)誤原因真是因?yàn)檎{(diào)用了python27pyinstaller,指定使用python36-32下的pyinstaller就沒(méi)毛病了

這時(shí)候的warn***.txt是一大堆的看不懂的東西... ...怎么辦?

沒(méi)關(guān)系,還有辦法,使用-D指令,將這個(gè)exe弄成一個(gè)目錄,然后使用命令行去運(yùn)行新目錄下的exe,然后你應(yīng)該會(huì)看到報(bào)錯(cuò)誤了

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

這時(shí)候dist目錄下會(huì)多一個(gè)目錄pachonggui

image

然后,在這里,我需要使用命令提示符去運(yùn)行這個(gè)exe

image

結(jié)果如下:

image

... ...PyQt5.sip是什么東東???我代碼里面沒(méi)有用到啊!!!~~~

在這種情況下,我決定,手動(dòng)在代碼里面加入它,然后再執(zhí)行一次打包命令

image
image

不明白為什么提示sip not found還在,但是,這時(shí)候,exe已經(jīng)可以運(yùn)行,沒(méi)有bug了

sublime Text 3不顯示pyqt

去該目錄下 C:\Users\13612\AppData\Roaming\Sublime Text 3\Packages\User,修改python3.sublime-build如下,增加一個(gè)shell字段即可

{
    "cmd": ["D:\\Program Files (x86)\\Python36-32\\python.exe", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",
      "shell":"true",
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容