1、修改代码中资源路径
在执行exe时资源文件会被解压到C:\Users\xxx\AppData\Local\Temp_MEI33282这样的一个名称随机的文件夹
所以要修改代码里资源的路径防止出错
def resource_path(filaeName):
if hasattr(sys, "_MEIPASS"):
return os.path.join(sys._MEIPASS, filaeName)
return os.path.join(filaeName)
# 调用资源文件路径如下
resPath = resource_path(filaeName)
2、修改生成的 *.spec 文件
例如: 我的程序名字是main.py , 以下命令生成main.spec 文件, 与main.py同级目录。
pyinstaller -F -w main.py
这是为了 使编译的时候 能够寻找到 资源文件的路径 进而能够将资源添加进 exe
打开main.spec, 找到EXE 部分, a.datas 下面的数组里[] 按照格式添加资源文件的位置。
第一个字段是文件名; 第二个字段是绝对路径;第三个字段是运行exe时的临时位置,不用改变。
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[("logo.jpg","E:/myproject/Demo/images/logo.jpg","DATA"),
("logo2.jpg","E:/myproject/Demo/images/logo2.jpg","DATA")],
3、使用 spec 文件再次打包 exe
pyinstaller -F main.spec
如果运行时有控制台的话, 需要修改main.spec, 将console=True 改为 False