Pyinstaller pygame.macosx.Video_AutoInit() 调用失败

Pyinstaller pygame.macosx.Video_AutoInit() call FAILED

我在尝试使用 pyinstaller 获取单目录 python 应用程序时遇到问题。 我编辑了 .spec 文件以添加一些我需要的文件。

# -*- mode: python -*-
a = Analysis(['main.py'],
             pathex=['/Users/mazzalex02/GAME'],
             hiddenimports=[],
             hookspath=None,
             runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='main',
          debug=False,
          strip=None,
          upx=True,
          console=True)

font = Tree('font',prefix='font')
hero = Tree('hero',prefix='hero')
src = Tree('src',prefix='src')
l1 = Tree('level1',prefix='level1')
l2 = Tree('level2',prefix='level2')

coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               font,
               hero,
               src,
               l1,
               l2,
               strip=None,
               upx=True,
               name='main',)

每次我尝试 运行 我得到的应用程序

ERROR: pygame.macosx.Video_AutoInit() call FAILED

我读了一些页面,人们讨论了这个问题,但没有用。

有解决办法吗?

我在 OS X 10.10.3

上为 python 2.7 32 位使用 pygame

如果我忘了添加任何有用的内容,请告诉我。如果你认为它很有用,我可以添加终端的完整输出,但它需要大约 80 行。

编辑 我又运行重新pyinstaller,错误依旧,只是有一个短"Call stack at first throw:"。我将在此处粘贴全文:

ERROR: pygame.macosx.Video_AutoInit() call FAILED
ERROR: pygame.macosx.Video_AutoInit() call FAILED
May 11 13:33:02 Alessandros-MacBook-Pro.local main[491] <Warning>: CGSConnectionByID: 0 is not a valid connection ID.
May 11 13:33:02 Alessandros-MacBook-Pro.local main[491] <Warning>: Invalid Connection ID 0
May 11 13:33:02 Alessandros-MacBook-Pro.local main[491] <Warning>: CGSConnectionByID: 0 is not a valid connection ID.
May 11 13:33:02 Alessandros-MacBook-Pro.local main[491] <Warning>: Invalid Connection ID 0
2015-05-11 13:33:02.755 main[491:7497] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Error (1000) creating CGSWindow on line 281'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x9c089c63 __raiseError + 195
    1   libobjc.A.dylib                     0x99421a2a objc_exception_throw + 276
    2   CoreFoundation                      0x9c089b7d +[NSException raise:format:] + 141
    3   AppKit                              0x92040c85 _NSCreateWindowWithOpaqueShape2 + 1728
    4   AppKit                              0x9203ec4d -[NSWindow _commonAwake] + 2227
    5   AppKit                              0x91fc597b -[NSWindow _commonInitFrame:styleMask:backing:defer:] + 874
    6   AppKit                              0x91fc4e4a -[NSWindow _initContent:styleMask:backing:defer:contentView:] + 1899
    7   AppKit                              0x91fc46cc -[NSWindow initWithContentRect:styleMask:backing:defer:] + 72
    8   SDL                                 0x01bacd8f SDL_SoftStretch + 28623
    9   SDL                                 0x01baba5c SDL_SoftStretch + 23708
    10  SDL                                 0x01b9f3e7 SDL_SetVideoMode + 599
    11  pygame.display.so                   0x01cf1eb7 set_mode + 335
    12  Python                              0x002c0140 PyEval_EvalFrameEx + 25408
    13  Python                              0x002c205f PyEval_EvalFrameEx + 33375
    14  Python                              0x002c205f PyEval_EvalFrameEx + 33375
    15  Python                              0x002c28dc PyEval_EvalCodeEx + 2012
    16  Python                              0x002c2a27 PyEval_EvalCode + 87
    17  Python                              0x002e7f5d PyRun_StringFlags + 285
    18  Python                              0x002e806e PyRun_SimpleStringFlags + 78
    19  Python                              0x002e80d9 PyRun_SimpleString + 25
    20  main                                0x000020fb pyi_pylib_run_scripts + 299
    21  main                                0x000156fb main + 411
    22  main                                0x00001965 start + 53
)
Trace/BPT trap

感谢所有帮助我找到解决方案的人(主要是通过纠正我问题中的语法)。

我使用了py2app,现在一切正常(没有人建议尝试其他模块,为什么?)。

我希望有人会觉得这个 "solution" 有用。我知道我还没有真正找到解决方案,但这是克服该错误的唯一方法。