将Python Cocos2D打包成可执行文件

时间:2015-08-22 09:17:30

标签: python py2exe cocos2d-python

我们现在正在为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'

1 个答案:

答案 0 :(得分:2)

我自己尝试过它并没有问题。但是我使用了cx_freeze。 看,Py2exe已经老了,不再维护了,总的来说你最好使用cx_freeze。

  1. 下载cx_freeze
  2. 创建一个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
        )
    
  3. 打开cmd / terminal并构建; python setup.py build

  4. 我只是用一个简单的游戏尝试过它并且编译没有任何问题。