pyqt5程序打包成exe文件的步骤和遇到的坑,以及如何更改exe的图标

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/j_starry/article/details/82261807

首先说一下想要把系统图标改成自己的图标,需要把图片转换成后缀为.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设计师里看到的不一样,无所谓了,可以成功打包就很不容易了,感谢上面提到的各种博客的博主,以及博文下的评论……

展开阅读全文

没有更多推荐了,返回首页