我的项目包含多个py文件,因此需要生成spec来进行打包,步骤如下:
1.使用相对路径
pyinstaller 打包py文件成exe文件,在没有python的机器上运行,执行打包后的程序,经常会出现程序使用的图标无法显示,程序使用的关联文件无法关联。或者,在打包的本机上运行正常,但是将打包后的程序放到其它机器上就有问题。这些现象都很有可能是由程序使用的文件路径发生改变产生的,因此在打包时候我们需要根据执行路径进行路径“冻结”。
在项目的根目录下添加一个frozen_dir.py文件
import sys
import os
def app_path():
“”“Returns the base application path.”""
if hasattr(sys, ‘frozen’):
# Handles PyInstaller
return os.path.dirname(sys.executable) #使用pyinstaller打包后的exe目录
return os.path.dirname(file) #没打包前的py目录
if name==‘main’:
print(app_path())
我的运行结果为
源代码中使用路径时,以app_path()的返回值作为基准路径,其它路径都是其相对路径,然后需要对源码中的路径进行相应修改,使之为基准路径+相对路径。例如