游戏从源代码运行良好,但不是从py2app运行

时间:2013-04-26 06:32:33

标签: python python-2.7 py2app

我用TCP,UDP和pygame做了一个多人Pong游戏。 我正在使用的模块是:pygame,os,logging,threading,random,yaml(PyYAML)和socket

当使用python2.7从命令行运行游戏时效果很好,但是使用py2app编译的版本给出了一个错误:

TypeError: Error when calling the metaclass bases
    function() argument 1 must be code, not str

我已经google了一下,关于堆栈溢出的其他问题在我看来似乎没有任何意义。它给我错误的行是:

class Entity(pygame.Surface):
    def __init__(self, x, y, w, h, color=(255, 255, 255)):
        pygame.Surface.__init__(self, (w, h))

正如您可能已经理解的那样,它位于此示例的第一行。使用pygame.Surface时有点奇怪。虽然正如我所说的,当我在命令行中运行程序时它会起作用!

我使用的py2app脚本是这样的:

from setuptools import setup

    APP = ['src/client.py']
    OPTIONS = {'argv_emulation': True, 'includes': ['EXTERNAL LIBRARY'], }

    setup(
        app=APP,
        options={'py2app': OPTIONS},
        setup_requires=['py2app'],
    )

提前致谢!

1 个答案:

答案 0 :(得分:3)

自己找到解决方案。在命令行的早些时候,它说:

RuntimeWarning: import transform: No module named _view (ImportError: No module named _view) 

显然,这使得'pygame.Surface`无法导入,并且未被计算机识别为函数。所以,错误信息毕竟是有道理的。