py2exe python3.6_python3.6编译带有图片的exe文件—没解决

前面的话,有能够编译py文件和图片资源一起打包为exe的大神,给讲一下,谢啦

最近有个pygame的小游戏需要编译成windows的exe文件,网上找了找资料一般有两种py2exe和pyinstaller.

为什么报错IndexError: tuple index out of range

根据网上的资料尝试后知道py2exe最高支持到python3.4, python3.6的opcode发生了改变(pyinstaller发布版也是这样报错)。py2exe解析opcode时不支持新的opcode,这里很多人不知道opcode,这和python的编译运行机制有关,python3.6改变原来的bytecode opcodes为wordcode opcodes。详细的可以参考python3.6新的改变.

怎么办

推荐使用pyinstaller,使用命令行安装成功后,进入”python安装目录\Lib\site-packages”,删掉Pyinstaller文件夹,github下载开发者版Pyinstaller,下载zip解压后提取Pyinstaller文件夹到刚才的目录替换。至此可以正常使用命令行完成。

新的问题

pyinstaller -F game.py后可以在”python安装目录\Scripts\dist”找到exe了。正常的单独py文件没有问题。但是我这个项目用到了一些图片和声音文件,发现运行exe时闪退原因是找不到资源文件。后来发现了这篇文章

另外,具体使用可以参考pyinstaller的文档。如果只有py的脚本文件,只使用pyinstaller -F 文件.py即可编译成exe。

但是这个项目用到了一些resources,项目结构如下:

py2exe python3.6_python3.6编译带有图片的exe文件---没解决

项目结构.jpg

按照文档上的命令操作仍出现很多问题:

1:首先生成spec文件

pyi-makespec -F name.py

2:调整.spec文件中的参数,添加data。文件夹中的文件目录:

py2exe python3.6_python3.6编译带有图片的exe文件---没解决

文件结构.jpg

game.py中的代码引用dude.png:

2.load images

player = pygame.image.load(‘dude.png’)

讲道理,在同一层目录下,按照文档上的说法,data按照如下添加即可:

datas=[(‘dude.png’,’.’)]

但就是不行,还尝试过很多种路径的写法,包括再放入一个文件夹。。。。等等都不行。

贴一些过程的错误:

py2exe python3.6_python3.6编译带有图片的exe文件---没解决

成功但exe不能正确引用图片.jpg

py2exe python3.6_python3.6编译带有图片的exe文件---没解决

引用不到的错误.jpg

py2exe python3.6_python3.6编译带有图片的exe文件---没解决

data中的参数错误.jpg

Original: https://blog.csdn.net/weixin_33942142/article/details/113478454
Author: 卡老板Camille
Title: py2exe python3.6_python3.6编译带有图片的exe文件—没解决

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/784311/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球