这里写目录标题
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
然后,程序就被打包进入程序中了,就算你之前存放图像的目录删除了,程序依旧可以成功显示图像。
亲测可行!