pyinstaller 打包python3.6+PyQt5中各種錯(cuò)誤的解決方案

前言:最近在學(xué)習(xí)單片機(jī),老師要求自己寫(xiě)串口通信的上位機(jī)程序,我采用比較簡(jiǎn)單的pyqt5+serial模塊來(lái)完成任務(wù),pycharm測(cè)試一切正常,在用pyinstaller打包時(shí)出現(xiàn)了很多錯(cuò)誤,查詢了很多資料后得到了解決,這里匯總一下解決的方法

1. WARNING: lib not found: api-ms-win-crt-string-l1-1-0.dll dependency

2999 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python\python.exe

3031 WARNING: lib not found: api-ms-win-crt-heap-l1-1-0.dll dependency of c:\python\python.exe

3218 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python\VCRUNTIME140.dll

3312 WARNING: lib not found: api-ms-win-crt-convert-l1-1-0.dll dependency of c:\python\VCRUNTIME140.dll

6494 WARNING: lib not found: api-ms-win-crt-heap-l1-1-0.dll dependency of c:\python\DLLs_hashlib.pyd

7271 WARNING: lib not found: api-ms-win-crt-stdio-l1-1-0.dll dependency of c:\python\DLLs\unicodedata.pyd

類(lèi)似于這種情況就是在python目錄下缺少相關(guān)的ddl文件,而自己的anocoda目錄下是有這些文件的,我的解決辦法是把a(bǔ)naconda目錄下的文件直接復(fù)制到python的目錄下,問(wèn)題就得到了解決。
考慮到可能有的人沒(méi)有下載anaconda,這里我把文件打包下來(lái),大家自取。
鏈接: https://pan.baidu.com/s/12G1bzxpA0MMred_EpOblRg 密碼: 4hts

2. 打包完成后運(yùn)行時(shí)出現(xiàn) "fail to excute script"

這里是不容易發(fā)現(xiàn)問(wèn)題的,造成這種問(wèn)題的原因很多。
在使用PyInstaller打包python程序,打包命令為:

pyinstaller -F -w -i manage.ico yourpyfile.py

順便說(shuō)一下幾個(gè)參數(shù)的作用

  • -F:是直接生成單獨(dú)的exe文件,不附帶各種依賴文件的。

- -c:生成的exe文件打開(kāi)方式為控制臺(tái)打開(kāi)。

  • -w:這個(gè)和上面的-c對(duì)應(yīng),如果你的程序是有ui的,那就用這個(gè)-w。這樣不會(huì)出現(xiàn)控制臺(tái),直接是你的ui。

  • -I:給你的exe文件添加一個(gè)圖標(biāo),后面要緊接著你想要的ico文件。

  • -p:后面緊跟著你要指定的模塊搜索路徑,如果你的模塊安裝的路徑?jīng)]有被PyInstaller自動(dòng)檢索到的話,就需要自己指定了。

出現(xiàn)“failed to excute script xxx”

這個(gè)原因?qū)嵲谑翘嗔耍褪歉嬖V你程序不能運(yùn)行。如果你是用-w方式打包的,我們這樣不能看出來(lái)問(wèn)題的根源是什么。所以我們還是以-c方式打包exe看一下控制臺(tái)輸出的error內(nèi)容是什么。

cmd下運(yùn)行打包出來(lái)的exe

給我報(bào)的錯(cuò)誤是:no modle named "PyQt5.sip"

其實(shí)tensorflow這個(gè)包我已經(jīng)導(dǎo)入了,而且可以被PyInstaller搜索到。只是它提示我的tensorflow.contirb這個(gè)搜索不到,

我猜是版本問(wèn)題?因?yàn)槲业膖ensorflow更新過(guò),最新版的去掉了好多東西,也有一些模塊改了實(shí)現(xiàn)方式和名稱(chēng)?!?/p>

真正的原因我還沒(méi)找,但是就先這樣吧,因?yàn)槲蚁脍s緊把問(wèn)題解決了。

那就:

pyinstaller -F -I manage.ico yourpyfile.py --hidden-import PyQt5.sip

這樣打包,直接把它想要import的這個(gè)子包屏蔽掉了,反正也沒(méi)用到。

到這里所有的問(wèn)題都得到了解決!

222.png

?著作權(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)容