使用Pyinstall将PyQT5打包成.exe应用程序(包含图标一同打包)

1.首先安装pyinstaller。

 1 pip install pyinstaller 

 

2.PyQT5制作程序中使用到的ico等一系列图标文件,要先经过.qrc文件转成.py文件后,才可跟随打包文件一同打包。

  首先创建一个.qrc文件,将图片文件全部写进去,例如:

1 <RCC>
2  <qresource>
3  <file>111.ico</file>
4  <file>222.png</file>
5  <file>333.gif</file>
6  <file>444.jpg</file>
7  </qresource>
8  </RCC>

  然后,使用pyrcc5命令,将.qrc文件转换成.py文件。

 1 pyrcc5 resource.qrc -o resource_rc.py 

转换后的.py文件如下:

 

3.需要在想要打包的***.py文件中将图片的路径写成这样:

1 palette1 = QPalette()
2 pix1 = QPixmap(":/111.jpg")
3 palette1.setBrush(QPalette.Background, QBrush(pix1))
4 demo.setPalette(palette1)
5 palette2 = QPalette()
6 pix2 = QPixmap(":/222.jpg")

 

4.在将要打包的***.py文件中将转后的.py文件import进去。

 1 import resource_rc.py 

 

5.1 单文件打包

  单文件打包会将整个项目和相关依赖都打包进一个exe,此时一般只需要发送exe文件给别人即可正常运行。它的缺点是:启动相对另一种打包方式更缓慢。
输入命令:

 1 pyinstaller -w -F -i '.\Plot.ico' main.py 

参数解释:
  -F :单文件打包
  -w:不要console(取消类似于cmd的黑框框)
  -i:后面接图标地址(图标一定要是标准的ico格式)
  最后面接的是要打包的程序:main.py

运行命令成功后:

  会生成三个文件夹和一个.spec文件,.exe在dist文件夹中。

 

5.2 单文件夹打包

  只需要将dist下的文件夹生成压缩包发给别人,别人解压,找到运行的exe即可运行程序。 相比于单文件打包命令, 只需将命令中的-F换成-D即可。

 1 pyinstaller -w -D -i '.\Plot.ico' main.py 

  打包完成后,同样生成了三个文件夹和一个.spec文件。 不同的是:在dist文件夹里生成了一个文件夹,而.exe就在该文件夹内。这种类型的打包启动速度相对比较快,但是不方便我们查找。而且需要我们格外小心,不要误删或者移动了里面的文件。

  PS:加 -F 虽然是生成了单个exe可执行文件,看上去很清爽,但是这个命令它把所有的环境都整合在了一起,如果我们的程序比较大的话,启动时就会非常慢(如果你的电脑性能一般的话,加载时间会更长)。因为它加载的数据都是静态加载的,需要去封装的包里一个个的去查找,所以速度变慢了。因此去掉 -F 之后,我们的启动速度流畅无比,体验效果也大大提升。去掉它之后,生成的dist文件中你程序中要用到的环境都会被放在dist中,这个时候所用到的环境就变成了动态加载的,速度就跟你用代码启动程序的速度是一样的。

 

posted @ 2021-12-01 11:26  缓下脚步  阅读(4012)  评论(0编辑  收藏  举报