我们现在正在为Ludum Dare开发Cocos2D游戏,我们遇到了将游戏打包成某种可执行文件的问题。
我们尝试过使用py2exe,但它似乎不起作用。我已经读过py2exe经常会导致这类库出现问题,但它们通常是可行的。但是,我在过去的几个小时里一直在做一些研究,我似乎无法找到解决方案。
这是执行.exe时给出的错误信息,显然它无法导入pyglet.resource模块。
C:\Users\Jon\Documents\GitHubVisualStudio\King-of-the-Dungeon\King of the Dungeon\King of the Dungeon\dist>king_of_the_dungeon.exe
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\pyglet\__init__.py", line 351, in __getattr__
return getattr(self._module, name)
AttributeError: 'NoneType' object has no attribute 'path'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "king_of_the_dungeon.py", line 1, in <module>
File "C:\Python34\lib\site-packages\cocos2d-0.6.3-py3.4.egg\cocos\__init__.py", line 71, in <module>
pyglet.resource.path.append(
File "C:\Python34\lib\site-packages\pyglet\__init__.py", line 357, in __getattr__
__import__(import_name)
ImportError: No module named 'pyglet.resource'
答案 0 :(得分:2)
我自己尝试过它并没有问题。但是我使用了cx_freeze。 看,Py2exe已经老了,不再维护了,总的来说你最好使用cx_freeze。
创建一个setup.py文件来创建一个exe:
import cx_Freeze
# Change "App" to the name of your python script
executables = [cx_Freeze.Executable("App.py")]
cx_Freeze.setup(
name="Sample Name",
version = "1",
options={"build_exe": {"packages":["pyglet", "cocos", "pygame"]}},
executables = executables
)
打开cmd / terminal并构建; python setup.py build
我只是用一个简单的游戏尝试过它并且编译没有任何问题。