Игра хорошо работает из исходников, но не из py2app

Я сделал многопользовательскую игру Pong с TCP, UDP и pygame. модули, которые я использую: 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'],
    )

Заранее спасибо!


person Johan Bjäreholt    schedule 26.04.2013    source источник
comment
Решение нашел сам, извините за беспокойство. ранее в командной строке было сказано: RuntimeWarning: import transform: нет модуля с именем _view (ImportError: нет модуля с именем _view) По-видимому, это сделало так, что pygame.Surface не мог быть импортирован и не был распознан как функция с компьютера. Итак, сообщение об ошибке имело смысл в конце концов   -  person Johan Bjäreholt    schedule 26.04.2013
comment
Не могу, видимо мне нужно 10 репутации, чтобы ответить самому в течение 8 часов   -  person Johan Bjäreholt    schedule 26.04.2013
comment
@Zenolijo О, смотри, у тебя уже больше 10 :).   -  person squiguy    schedule 26.04.2013


Ответы (1)


Сам нашел решение. Ранее в командной строке было написано:

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

По-видимому, это сделало так, что «pygame.Surface» не мог быть импортирован и не был распознан компьютером как функция. Итак, сообщение об ошибке имело смысл.

person Johan Bjäreholt    schedule 26.04.2013