Crossin的编程教室

标题: 关于打飞机游戏打包成exe文件的错误 [打印本页]

作者: crossin_baby    时间: 2015-12-31 11:59
标题: 关于打飞机游戏打包成exe文件的错误
本帖最后由 crossin_baby 于 2015-12-31 12:01 编辑

大家好,之前学习了打飞机那个游戏,现在想转换成exe文件独立运行(使用的是cxfreeze),但是由于pygame的存在,导致出现错误,不知是什么原因,哪位可以解答以下,十分感谢。以下是控制台输出:
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/cx_Freeze/initscripts/Console.py", line 27, in <module>
    exec code in m.__dict__
  File "convert1.py", line 2, in <module>
  File "/usr/lib/python2.7/dist-packages/pygame/__init__.py", line 255, in <module>
    try: import pygame.surfarray
  File "/usr/lib/python2.7/dist-packages/pygame/surfarray.py", line 69, in <module>
    import pygame._numpysurfarray as numpysf
  File "/usr/lib/python2.7/dist-packages/pygame/_numpysurfarray.py", line 48, in <module>
    import numpy
  File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 163, in <module>
    from .core import *
AttributeError: 'module' object has no attribute 'sys'

作者: crossin先生    时间: 2015-12-31 13:09
可能是因为打包exe之后找不到库文件。
可以试试看把用到的库文件都放在和源码同一目录下
不过我也没研究过把pygame打包exe的过程,所以不知道确切的解决方案。之后我打算找时间看一下(手头也没有windows……)
作者: crossin_baby    时间: 2015-12-31 13:46
crossin先生 发表于 2015-12-31 13:09
可能是因为打包exe之后找不到库文件。
可以试试看把用到的库文件都放在和源码同一目录下
不过我也没研究过 ...

十分感谢您!我是在ubuntu中编写的,然后直接在终端运行即可(目录下加个·/方式),就是这一步出的问题。我再去试试
作者: crossin先生    时间: 2016-1-1 22:50
crossin_baby 发表于 2015-12-31 13:46
十分感谢您!我是在ubuntu中编写的,然后直接在终端运行即可(目录下加个·/方式),就是这一步出的问题 ...

如果你是在ubuntu下,可能没法打包exe文件吧(这我也不是太清楚,我之前只在windows下尝试过)
作者: 373978282    时间: 2016-1-5 23:02
crossin老湿,各种方式都不能用运行啊

QQ图片20160105230030.png (10.24 KB, 下载次数: 402)

QQ图片20160105230030.png


作者: crossin先生    时间: 2016-1-6 12:41
373978282 发表于 2016-1-5 23:02
crossin老湿,各种方式都不能用运行啊

游戏未打包前运行是否都正常?
控制台有没有输出错误提示?
然后确认下,你用的python、pygame、cxfreeze的版本是否都一致(版本匹配,都是32位或者都是64位)常常会因为其中一个用了32位而其他是64位而导致了错误
作者: 373978282    时间: 2016-1-6 23:55
crossin先生 发表于 2016-1-6 12:41
游戏未打包前运行是否都正常?
控制台有没有输出错误提示?
然后确认下,你用的python、pygame、cxfreeze ...

再次运行py程序,可以运行。电脑是win10,64位,python2.7,pygame,cxfreeze都是32位的。重新尝试打包,在cmd中输入:cxfreeze D:\python\27\project1\PlaneGame(copy).py --target-dir D:\python\27\project1\planegame --base-name=win32gui     cmd中无报错,然后去双击运行PlaneGame(copy).exe,弹出报错对话框(我放在附件,您帮忙看看,说是图片不能打开啥的),于是我把图片复制到该exe文件下,运行该exe文件,再次报错runtime error(图片在附件)。再次到cmd下输入D:\python\27\project1\planegame   后面没有输PlaneGame(copy).exe,直接报错:couldn‘t open back.jpg,检查图片格式名称都是没错的,诡异的地方是,我只是输入D:\python\27\project1\planegame,没有运行PlaneGame(copy).exe,他怎么会直接出运行结果呢?  今天试了多次,跟昨天一样。

$2SJCGNUIOB_QQ`I9UT9~WT.png (14.82 KB, 下载次数: 400)

手动拷入图片之前

手动拷入图片之前

CLVA[4~@XXIEY51VTXRHM[X.png (13.17 KB, 下载次数: 394)

手动拷入图片之后

手动拷入图片之后


作者: crossin先生    时间: 2016-1-7 11:51
373978282 发表于 2016-1-6 23:55
再次运行py程序,可以运行。电脑是win10,64位,python2.7,pygame,cxfreeze都是32位的。重新尝试打包, ...

这个真不知道了。不过判断应该不是你代码的问题。跟前面图片路径不对相比,报错来源已经不是python,而是ms c++ runtime library.通常类似的问题是缺少Microsoft Visual C++ Redistributable Package,但那一般也会报错告诉你找不到xxx.dll。现在直接报错让你contact support team,直接联系开发人员……说明是一些他们也没预料到的问题。
有可能是win10不支持。你试试看你打包好的东西给别人电脑上是否能运行。

建议尝试方法:
换py2exe;
换python/pygame/cx_freeze版本;
换台旧系统的电脑或者弄个xp的虚拟机在里面打包(不过仍然有可能打包出来不能在你的电脑上运行)
作者: 373978282    时间: 2016-1-8 23:59
crossin先生 发表于 2016-1-7 11:51
这个真不知道了。不过判断应该不是你代码的问题。跟前面图片路径不对相比,报错来源已经不是python,而是 ...

还没试过,到时候试试在其他系统上打包。另:今天试了一晚上的pyinstaller,还素不行啊,crossin大神对pyinstaller有没有研究?一步步按照网上说的,cmd中打包D:\PyInstaller-3.0>python pyinstaller.py --console --onefile  test.py  报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in position 7: ordinal not in range(128)  
作者: crossin先生    时间: 2016-1-9 22:40
373978282 发表于 2016-1-8 23:59
还没试过,到时候试试在其他系统上打包。另:今天试了一晚上的pyinstaller,还素不行啊,crossi ...

没用过。只用过cxfreeze和py2exe,这个报错像是因为代码里有中文,而没有指定代码编码




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5