pyqt5程序打包成exe文件的步驟和遇到的坑,以及如何更改exe的圖標

首先說一下想要把系統圖標改成自己的圖標,需要把圖片轉換成後綴爲.ico的圖標

此時可以使用工具:Greenfish Icon Editor Pro 3.31  我是從新浪科技的網站上下載的,沒有亂七八糟的遊戲http://down.tech.sina.com.cn/page/45742.html

開始打包

首先輸入下面的命令,如果pyinstaller沒有下載,請pip install pyinstaller

pyinstaller -F -w -i img.ico main.py
或
pyinstaller -F -c -i img.ico main.py
(建議先用-c,這樣如果打包不成功的話可以看到哪裏有錯)
  • -F 指只生成一個exe文件,不生成其他dll文件
  • -w 不彈出命令行窗口
  • -i 設定程序圖標 ,其後面的ico文件就是程序圖標
  • main.py 就是要打包的程序
  • -c 生成的exe文件打開方式爲控制檯打開。

報錯1:Maximum recursion depth exceeded

這個參考了https://blog.csdn.net/lucytheslayer/article/details/81030840,說是因爲遞歸遍歷超過了限制,(但一般是因爲你某一步有錯,因爲我之後把有錯的地方解決了就不用加下述代碼了)爲了看最後生成的exe哪裏有錯不能運行,需要執行以下操作,以便繼續生成exe文件

解決:

(1)打開生成的xxx.spec文件,把一下代碼加進去

import sys
sys.setrecursionlimit(5000)

(2)使用命令行

pyinstaller xxx.spec

完成之後,可以看到dist文件夾下有一個exe文件,雙擊打開

報錯2:Failed to execute script MainPage

如果是用-w打包,最後會彈出一個錯誤對話框,寫着Failed to execute script MainPage,爲了弄清楚是爲什麼錯誤,需要用-c打包,使用控制檯窗口查看

錯誤1:ModuleNotFoundError: No module named 'PyQt5.sip'

https://blog.csdn.net/qq_41185868/article/details/80903095中說是因爲pyqt5與sip版本不匹配造成的,需要採用pip更新sip庫,

pip install SIP

但是我用這個方法不行!我升級之後SIP版本還是4.19.8,看剛剛那個博客下面的評論,說是把PyQt5版本降爲5.10.1版本的就可以,https://pypi.org/project/PyQt5/5.10.1/#files這裏可以下載5.10.1版本,下載完成後進入此文件所在的目錄使用pip安裝,我遇見了一個錯誤

Could not install packages due to an EnvironmentError: [WinError 32] 另一個程序正在使用此文件,進程無法訪問。: 'c:\\program files\\anaconda3\\lib\\site-packages\\pyqt5\\qt\\resources\\icudtl.dat'
Consider using the `--user` option or check the permissions.

這個我重啓電腦之後再pip就可以了

降級後pyqt5再打包,就成功了(但是有個不好的地方!我pyqt5降級成這個版本,eric6不能正常啓動,eric6會閃退,沒辦法,我只能打包的時候降級,不打包的時候升級了,我使用5.11.2版本,eric6可以正常打開)

(兩個版本都要用……)

錯誤2:ImportError: Importing the multiarray numpy extension module failed.  Mostlikely you are trying to import a failed build of numpy.If you're working with a numpy git repo, try `git clean -xdf` (removes allfiles not under version control).  Otherwise reinstall numpy.
Original error was: DLL load failed: 找不到指定的程序。

看了https://blog.csdn.net/bianjun1075/article/details/77803395下的評論,解決方案1是把C:\Users\user\Anaconda3\Library\bin添加到系統變量方案2去Anaconda目錄中找打lib下的site-packages找到這幾個numpy相關的包,直接刪除,然後command 直接安裝pip install numpy ,這兩個方案一個不行就試試另外一個吧

錯誤3:No module named 'pandas._libs.tslibs........

這個錯誤我不算是解決了吧,因爲好像隱藏了一個,又會出現另一個報錯,我看了看pandas這個包我也可以先不用,就直接把import pandas刪了。這個錯誤出現的原因就是你打包的時候把文件寫進去了,執行的時候又找不到這個文件。

需要解決這個錯誤的同學可以參考這篇博客https://blog.csdn.net/lj1404536198/article/details/79272450

以下是我遇到的錯誤,有點暈,直接不引用pandas了。。。

 

 

然後終於打包好了,但是打開之後,感覺有些效果跟在QT設計師裏看到的不一樣,無所謂了,可以成功打包就很不容易了,感謝上面提到的各種博客的博主,以及博文下的評論……

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