PyQt5项目打包过程中遇到的问题记录

写在前面

博主近期写了很多的PyQt项目,每次打包的时候都会遇到一堆让自己崩溃的问题,尤其是软件图标的问题,网上搜了一堆资料,没几个说到点子上。
博主折腾了很长一段时间后,终于解决了这些坑,记录一下,以免下次遇到又抓狂。

打包过程

打包工具

博主用的是pyinstaller,这也是目前最主流的打包工具了吧,听说还可以将Python文件打包成apk文件呢,也就是说以后安卓开发也可以用Python了,当然IOS开发也不成问题
如果还没安装的话,在cmd窗口中输入以下命令行即可:

pip install pyinstaller -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

也可以直接pip install pyinstaller,后面是用的豆瓣的镜像安装的,速度会快一点。

切换路径

软件打包也是在cmd窗口中,但一般情况下,cmd的根目录和你的工程项目可能不是一个文件夹,因此在打包之前先切换一下盘符,后面也能省掉很多麻烦事儿。
切换盘符方法,也是在cmd窗口中输入:

cd /d D:\python\

通过这种方法,从根目录切换到了D盘的Python文件夹下面,这里要根据个人的工作目录情况而定。

打包

正式进入打包环节,也是在cmd窗口下打包,在切换工作目录后,继续输入命令行即可,用pyinstaller打包网上能搜出一大堆的资料,这里我简单介绍几种。

  • 第一种,生成单一的可执行文件:
pyinstaller -F test.py

test.py是你要打包的项目,这样生成的玩意儿就是个单一的可执行文件,也没有图标,这种我很少用,大家可以自行试试。

  • 第二种,给软件加个图标,这里我说的图标是指可执行文件的图标,看下面的图
    在这里插入图片描述
    就是说,要给我的exe文件加上前面那个ico图标,上面已经是我打包好的结果。命令行如下:
pyinstaller -F --icon=test.ico test.py

test.ico是要用到的图标文件,这个文件应该要与test.py放在同一个目录下面,当然也可以用绝对路径。
好了,经过漫长的打包过程,如果顺利的话,能生成一个可执行文件。但是如果不顺利的话,能出现一大堆bug,这些bug真是一言难尽,有时候说咱没有安装这个那个包,反正很难受,博主也遇到了,然后放弃了,直接换了另外一台电脑打包。顺利通过。
虽然通过了,但是一看打包的大小,如下
在这里插入图片描述
这是个啥玩意儿,300M+,这怕是打了个寂寞。
说多了都是泪,网上说是因为我在导入包的过程中用了from XXX import *这种方式,我觉得这不是主要原因,主要原因是当初安装Python时,为了省事直接通过anaconda安装的,这才是罪魁祸首,所以啊,建议大家在安装Python的时候千万别图一时之爽,官网安装才是最好的选择。
当然了,博主也不想重装Python,反正就是启动慢了点而已。
现在双击这个可执行文件,看看效果:
首先出现的是一个dos窗口,而不是软件的界面,如下:
在这里插入图片描述
过了大概半分钟,出现了软件的界面:
在这里插入图片描述
是这么回事儿,可是,为啥软件左上角是这么个玩意儿?在这里插入图片描述
命名我在代码里面用QIcon设置了图标啊,不光是这里,连状态栏里也是这么个丑东西。看下面
在这里插入图片描述
简直不能再丑了,待会儿再来说怎么解决这个问题吧。
前面说了,如果我双击可执行文件,先出来的是控制台,这样有啥好处呢,就是如果软件还在测试阶段,如果运行有啥问题的话,可以在控制台中显示,如果不想要,也可以去掉,也就是下面的方式。

  • 第三种,不需要控制台
pyinstaller -F -w --icon=test.ico test.py

中间加个-w就行了。
还有很多种方式,这个不是重点,需要的可以网上搜。
我这篇博客重点要解决的就是上面那个图标不显示的问题,因为这个问题它浪费了我半天的时间,而实际上之前我也遇到了同样的问题,解决了,然后因为没记录又忘记了,所以这次一定要记录下来。

软件图标显示问题

网上很多文章,有的说要设置图标的绝对路径,有的说是icon格式有问题,这些都是指标不治本的方法。下面我来说说我的解决方案,当然也是网上找的,只不过很难找到而已。
思考:
在计算机中,图片也是矩阵,如果把图片处理成数字,然后导入这些数字,是不是也能显示为图片?
就是这么个思路。

生成qrc文件

先用记事本新建个文件,在文件中写入以下代码:

<RCC>
 <qresource prefix = "/">
   <file>test.ico</file>
 </qresource>
</RCC>

注意了test.ico就是咱软件要显示的图标。
然后把这个文件重命名下,比如我命名的就是resource.qrc,注意后缀名,是qrc文件,待会儿要用到,注意,这个qrc文件应该放是图标文件所在的文件夹下。

生成py文件

就是使用pyrcc5将resource.qrc进行转换得到.py文件,pyrcc5是PyQt5的附带工具,安装PyQt5后有。
具体怎么操作呢?这很关键,网上资料比较少,我记录一下:

  1. 打开resource.qrc所在的文件夹;
  2. 使用命令行进入项目所在文件夹进行操作,或者使用Powershell,博主使用的是Powershell,怎么使用这个Powershell呢,在刚才这个文件夹下,按住shift键单击鼠标右键弹出菜单,点击“在此处打开Powershell窗口(S)”打开Powershell,界面像下面这个样子;
    在这里插入图片描述
  3. 在Powershell窗口中输入命令行pyrcc5 -o resource.py resource.qrc,再看看,文件夹下面是不是多了个resource.py文件;
  4. 在主程序代码中import这个py文件,并设置图标,如下。
import resource
self.setWindowIcon(QIcon(":/test.ico"))

经过这一系列的操作,然后再去打包,就正常显示这个图标了。随便把这个可执行文件放哪里都能正常显示。
在这里插入图片描述
在这里插入图片描述
上面是软件的左上角显示的图标,下面是状态栏显示的图标,一个不少。
好啦,就到这里了,Python项目打包可不简单~

猜你喜欢

转载自blog.csdn.net/u012848304/article/details/115396547
今日推荐