最近有需要用pyinstaller打包
直接上命令:
pyinstaller -F xxx.py -w -i img.ico
-F 指定需要打包的主文件,-w是让打包后的exe,运行不再出现cmd框,一般打包都会加上,-i 是指定打包后的图标ico文件
在线生成ico链接:
https://www.51tool.com/ico/
打包后会发现生成了.spec文件,和一个dist文件夹,打包后的exe在dist文件夹里
如何打包资源文件,在.spec里修改:
在datas里添加,以元组的形式加进去,mould.xlsx是需要打包进去的文件,后面是需要打包到的路径,这样写的是把mould.xlsx文件打包到和GUI.py这个脚本的同级目录下
然而在实际操作时,发现还是找不到文件。原因是实际exe执行的文件夹和打包资源解压的文件夹不一样,解决方法,更改读取资源的路径函数:
def base_path(path):
if getattr(sys, 'frozen', None):
basedir = sys._MEIPASS
else:
basedir = os.path.dirname(__file__)
return os.path.join(basedir, path)
需要读取的时候:
workbook = openpyxl.load_workbook(base_path(mould_path))