首頁 > 軟體

pyinstaller打包python3.6和PyQt5中各種錯誤的解決方案彙總

2022-08-15 14:01:34

前言:

最近在學習微控制器,老師要求自己寫串列埠通訊的上位機程式,我採用比較簡單的pyqt5+serial模組來完成任務,pycharm測試一切正常,在用pyinstaller打包時出現了很多錯誤,查詢了很多資料後得到了解決,這裡彙總一下解決的方法

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:pythonpython.exe

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

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

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

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

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

類似於這種情況就是在python目錄下缺少相關的ddl檔案,而自己的anocoda目錄下是有這些檔案的,我的解決辦法是把anaconda目錄下的檔案直接複製到python的目錄下,問題就得到了解決。

考慮到可能有的人沒有下載anaconda,這裡我把檔案打包下來,大家自取。

點選這裡下載

2. 打包完成後執行時出現 "fail to excute script"

這裡是不容易發現問題的,造成這種問題的原因很多。

在使用PyInstaller打包python程式,打包命令為:

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

順便說一下幾個引數的作用

  • -F:是直接生成單獨的exe檔案,不附帶各種依賴檔案的。

- -c:生成的exe檔案開啟方式為控制檯開啟。

  • -w:這個和上面的-c對應,如果你的程式是有ui的,那就用這個-w。這樣不會出現控制檯,直接是你的ui。

  • -I:給你的exe檔案新增一個圖示,後面要緊接著你想要的ico檔案。

  • -p:後面緊跟著你要指定的模組搜尋路徑,如果你的模組安裝的路徑沒有被PyInstaller自動檢索到的話,就需要自己指定了。

出現“failed to excute script xxx”

這個原因實在是太多了,他就是告訴你程式不能執行。如果你是用-w方式打包的,我們這樣不能看出來問題的根源是什麼。所以我們還是以-c方式打包exe看一下控制檯輸出的error內容是什麼。

cmd下執行打包出來的exe

給我報的錯誤是:no modle named "PyQt5.sip"

其實tensorflow這個包我已經匯入了,而且可以被PyInstaller搜尋到。只是它提示我的tensorflow.contirb這個搜尋不到,

我猜是版本問題?因為我的tensorflow更新過,最新版的去掉了好多東西,也有一些模組改了實現方式和名稱。‘

真正的原因我還沒找,但是就先這樣吧,因為我想趕緊把問題解決了。

那就:

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

這樣打包,直接把它想要import的這個子包遮蔽掉了,反正也沒用到。

到這裡所有的問題都得到了解決!

總結

到此這篇關於pyinstaller打包python3.6和PyQt5中各種錯誤解決的文章就介紹到這了,更多相關pyinstaller打包python3.6 PyQt5內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com