近日使用pyinstaller打包GUI程序,由于程序中使用了一些图片之类的文件,源代码直接运行没有任何问题,可是一旦打包成exe,运行总是提示No such file类的错误。
网上参考很多文章总是不行,exe提示找不到文件无非就是打包没打进去或者文件路径不对。
后经过反复试验,终于成功,以下两点颇为重要,尤其是代码中文件路径的代码设置方法,
1.首先pyinstaller -F -w -i test.ico test.py,目的是自动生成test.spec文件供后续修改
2.编辑test.spec文件,添加added_files 并修改datas属性,参考如下:
added_files = [
( 'D:/Projects/Python/test/test.png', '.' ),
( 'D:/Projects/Python/test/test.ico', '.' ),
( 'D:/Projects/Python/test/test/data', 'test_data' )
]
a = Analysis(['test10.py'],
pathex=[],
binaries=[],
datas=added_files,
# *** added_files 是要打包的文件列表
# *** 注意修改datas=added_files,
3.代码中使用到资源文件的地方,不能使用相对路径
#错误写法,虽然运行py文件不报错,一旦打包就会找不到该文件
self.window.iconbitmap('test.ico')
#正确写法
self.file_path = os.path.abspath(os.path.dirname(__file__))
imgPath = os.path.join(self.file_path,'test.ico')
self.window.iconbitmap(imgPath)
4.pyinstaller -F test.spec,恭喜你exe可以正常运行了