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
私はグーグルで調べましたが、スタックオーバーフローに関するこれに関する他の質問は、私の場合は意味がないようです。エラーが表示される行は次のとおりです。
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'],
)
前もって感謝します!