Лучшее из двух миров: упаковка для игры в Python
В настоящее время я пытаюсь упаковать игру, созданную на python и pygame, и сталкиваюсь с некоторыми проблемами.
я использую py2exe
чтобы упаковать и посмотрел некоторые вопросы здесь об этом, но я не мог найти отличное решение. Я хочу в конечном итоге с папкой, содержащей exe
, что я могу сжать и поставить онлайн. Запуск setup.py
работает нормально, за исключением того, что помещает все зависимости в library.zip
, Это означает, что программа при запуске не работает.
Я обнаружил, что кто-то еще сталкивался с этой проблемой, и они прекратили использовать "skip archive = true"
вариант решить это. И хотя, да, это тоже работает для меня, я надеялся, что найдется метод, который все же позволит программе без проблем работать, но не захламляет папку бесчисленными файлами.
Чтобы быть очень точным, проблема, с которой я сталкиваюсь с library.zip
является:
ImportError: MemoryLoadLibrary failed loading pygame\mixer.pyd
Что, если я правильно понимаю, означает, что программа не может найти / найти модуль микшера Pygame.
Вот сценарий установки, который я сейчас использую (и он не работает):
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
data_files = [('resources', ['resources/step.wav',
'resources/wind2.wav',
'resources/The Steppes.ogg',
'resources/warrior3-nosword-notassle.png',
'resources/warrior3-sword.png',
'resources/warrior2-blood1.png',
'resources/warrior2-blood2.png',
'resources/warrior2-blood3.png',
'resources/warrior2-blood4.png',
'resources/warrior3-up.png',
'resources/warrior3-kneel.png',
'resources/warrior3-kneel-nosword.png',
'resources/warrior2-blood2-kneel.png',
'resources/warrior2-blood3-kneel.png',
'resources/warrior2-blood4-kneel.png',
'resources/warrior3-death.png',
'resources/warrior3-offarm.png',
'resources/menu1.png',
'resources/plains3-top-nomount.png',
'resources/mountains.png',
'resources/plains5-bottom.png',
'resources/plains3-bottom.png',
'resources/cloud1.png',
'resources/warrior2-sword.png',
'resources/warrior2-hand.png',
'resources/blue-tassle1.png',
'resources/blue-tassle2.png',
'resources/blue-tassle3.png',
'resources/blue-tassle4.png'])]
setup(options = {'py2exe': {"bundle_files": 1}},
data_files = data_files,
console = [{'script': "steppes2.0.py"}],
zipfile = None
)
1 ответ
Этот код в вашем setup.py должен выполнить трюк для создания одного исполняемого файла (вам все равно придется раздавать DLL-библиотеки msvc отдельно)
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
options = {'py2exe': {'bundle_files': 1}},
console = [{'script': "myscript.py"}],
zipfile = None,
)