2013-04-26 15 views
5

Tôi đã tạo một trò chơi Pong nhiều người chơi với TCP, UDP và pygame. các mô-đun tôi đang sử dụng là: pygame, os, logging, luồng, ngẫu nhiên, yaml (PyYAML) và socketTrò chơi chạy tốt từ nguồn, nhưng không phải từ py2app

Khi chạy trò chơi từ dòng lệnh với python2.7 hoạt động tốt, nhưng phiên bản đã biên dịch với py2app mang lại cho tôi một lỗi đó là:

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

tôi có googled xung quanh, và những câu hỏi khác về vấn đề này trên stack overflow không thực hiện bất kỳ ý nghĩa trong trường hợp của tôi có vẻ như. Dòng mà nó cho tôi lỗi là:

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

Như bạn có thể đã hiểu, đó là dòng đầu tiên của ví dụ này. Đó là một cái gì đó khủng khiếp khi sử dụng pygame.Surface. Mặc dù như tôi đã nói, nó hoạt động khi tôi chạy chương trình trong dòng lệnh!

Kịch bản py2app tôi sử dụng đi như thế này:

from setuptools import setup 

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

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

Cảm ơn trước!

+0

Tìm thấy giải pháp cho bản thân, xin lỗi vì đã làm phiền bạn. trước đó trong dòng lệnh nó nói: RuntimeWarning: nhập khẩu chuyển đổi: Không có mô-đun tên _view (ImportError: Không có mô-đun tên _view) Rõ ràng, điều đó khiến rất pygame.Surface không thể nhập khẩu và không được công nhận là một chức năng từ máy tính. Vì vậy, thông báo lỗi có ý nghĩa sau khi tất cả –

+0

Không thể, dường như tôi cần 10 danh tiếng để tự trả lời trong vòng 8 giờ –

+1

@Zenolijo Oh nhìn bạn có hơn 10 giờ :). – squiguy

Trả lời

3

Tìm thấy giải pháp cho bản thân. Trước đó trong dòng lệnh, nó cho biết:

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

Rõ ràng, điều đó khiến nó trở thành 'pygame.Surface` không thể được nhập và không được máy tính nhận dạng là chức năng. Vì vậy, thông báo lỗi có ý nghĩa sau khi tất cả.

Các vấn đề liên quan