美文网首页Python语言与信息数据获取和机器学习
python3.6编译带有图片的exe文件---没解决

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

作者: stone305585 | 来源:发表于2017-07-17 10:08 被阅读0次

    前面的话,有能够编译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,项目结构如下:

    项目结构.jpg

    按照文档上的命令操作仍出现很多问题:
    1:首先生成spec文件
    pyi-makespec -F name.py

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

    文件结构.jpg

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

    #2.load images
    player     = pygame.image.load('dude.png')
    

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

    datas=[('dude.png','.')]
    

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

    贴一些过程的错误:


    成功但exe不能正确引用图片.jpg 引用不到的错误.jpg data中的参数错误.jpg

    相关文章

      网友评论

        本文标题:python3.6编译带有图片的exe文件---没解决

        本文链接:https://www.haomeiwen.com/subject/jneghxtx.html