Упаковка Python Cocos2D в исполняемый файл

Сейчас мы работаем над игрой Cocos2D для Ludum Dare, и у нас возникают проблемы с упаковкой игры в какой-то исполняемый файл.

Мы пытались использовать 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 ответ

Я только попробовал это сам, и это работает без проблем. Но я использовал 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 / терминал и собрать с помощью; python setup.py build

Я только попробовал это с простой игрой, и это собрало без проблем.

Другие вопросы по тегам