两全其美:游戏的python包装

时间:2012-03-21 18:24:30

标签: python pygame py2exe

我目前正在尝试打包用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 个答案:

答案 0 :(得分:1)

你的setup.py中的这段代码应该可以生成一个可执行文件(你仍然需要单独分发msvc dll)

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,
)