赞
踩
近日使用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可以正常运行了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。