【PyQt5】py文件打包exe文件(将图片资源打包成一个exe文件)

1. 下载pyinstaller

pip install pyinstaller

2. 软件打包

2.1 py文件直接打包

pyinstaller [参数] [要打包的主程序.py]

参数:

-F, –onefile 打包成一个exe文件
-D, –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c, –console, –nowindowed 使用控制台,无界面(默认)
-w, –windowed, –noconsole 使用窗口,无控制台
-i + 图标路径:设置文件的图标

例如:
打包为一个exe文件(无其他依赖文件),无控制台,制定一个ico文件作为程序的图标

pyinstaller -F -w -i=./src/chess.ico MainWindow.py

2.2 pyinstaller根据.spec文件打包

.spec文件是打包py文件的时候会自动生成的。我们可以编辑其中的部分内容,然后重新进行打包。
.spec文件格式的介绍,不再赘述。
在这里插入图片描述
格式:pyinstaller [.spec文件]
例如:

pyinstaller MainWindow.spec

2.3 将图像资源打包进入exe文件

2.3.1 修改py文件部分源码:

程序中的图像路径不宜再使用绝对路径或者相对路径,可参考一下代码进行修改:
添加一个函数。

import os
import sys

def resource_path(relative):
    if hasattr(sys, "_MEIPASS"):
        absolute_path = os.path.join(sys._MEIPASS, relative)
    else:
        absolute_path = os.path.join(relative)
    return absolute_path

然后图像路径改为如下,图像名称作为参数

img = QImage(resource_path('2.jpeg'))  # 创建图片实例

这样,直接运行py文件程序会找不到图像。但这样并没有关系,不影响打包。

2.3.2 直接打包py文件

pyinstaller -F -w -i=./src/chess.ico MainWindow.py

打包完成之后程序并没有实现图像打包的功能,我们需要修改生成的.spec文件

2.3.3 修改 .spec的文件

修改exe的部分
在这里插入图片描述
在对应位置的数组中添加对应格式的图像信息:
每个元素的格式(‘图像名’,‘绝对路径’,‘DATA’)

[('confirm.ico','F:\\workspace\\chess\\src\\confirm.ico','DATA'),('2.jpeg','F:\\workspace\\chess\\src\\2.jpeg','DATA')],

2.3.4 根据 .spec文件重新打包

pyinstaller MainWindow.spec

然后,程序就被打包进入程序中了,就算你之前存放图像的目录删除了,程序依旧可以成功显示图像。
亲测可行!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值