2013-04-26 11 views
5

Ho realizzato un gioco Pong multiplayer con TCP, UDP e pygame. i moduli sto usando sono: pygame, os, la registrazione, filettatura, casuale, YAML (PyYAML) e presaIl gioco funziona bene dal sorgente, ma non da py2app

Quando si esegue il gioco dalla linea di comando con python2.7 funziona bene, ma la versione compilata con py2app mi dà un errore che è:

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

googled intorno, e le altre domande su questo su stack overflow non ha alcun senso nel mio caso sembra. La linea in cui mi dà l'errore è:

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

Come forse avrete capito, è sulla prima linea di questo esempio. È qualcosa di strano quando si usa pygame.Surface. Anche se come ho detto, funziona quando eseguo il programma nella riga di comando!

Lo script py2app io uso è questa:

from setuptools import setup 

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

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

Grazie in anticipo!

+0

Ho trovato la soluzione da sola, mi dispiace di averti disturbato. in precedenza nella riga di comando che ha detto: RuntimeWarning: import trasformare: No module named _Vedi (ImportError: No module named _Vedi) A quanto pare, che ha reso così pygame.Surface non poteva essere importato e non è stato riconosciuto come una funzione da il computer. Quindi, il messaggio di errore aveva senso dopo tutto –

+0

Impossibile, a quanto pare ho bisogno di 10 reputazione per rispondere io stesso entro 8 ore –

+1

@Zenolijo Oh guarda che hai più di 10 ora :). – squiguy

risposta

3

Ho trovato la soluzione da solo. All'inizio della linea di comando che ha detto:

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

A quanto pare, che ha reso cosi 'pygame.Surface` non poteva essere importato e non è stato riconosciuto come una funzione dal computer. Quindi, il messaggio di errore aveva senso dopo tutto.