2

次の「Hello world」pygame アプリを取得して、pyinstaller を使用して Mac OS X (10.8) アプリを生成しようとしています。

import pygame, sys
import pygame._view
from pygame.locals import *

pygame.init()

# set up the window
windowSurface = pygame.display.set_mode((500, 400), 0, 32)
pygame.display.set_caption('Hello world!')

# set up the colors
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)

# draw the white background onto the surface
windowSurface.fill(WHITE)

# draw a black circle onto the surface
pygame.draw.circle(windowSurface, BLACK, (250, 200), 20, 0)

# draw the window onto the screen
pygame.display.update()

# run the game loop
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

仕様ファイルは次のようになります。

# -*- mode: python -*-
a = Analysis(['test.py'],
             pathex=['/Users/ronan/Documents/projects/python/test'],
             hiddenimports=[],
             hookspath=None,
             runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='test',
          debug=True,
          strip=None,
          upx=False,
          console=False )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=None,
               upx=False,
               name='test')
app = BUNDLE(coll, name='test.app')

Pyinstaller は正常に機能しているようで、test.app を含む dist フォルダーを作成します。ただし、実行されません。コマンド ラインから実行可能な dist フォルダーを実行すると、次のエラーが発生します。

Traceback (most recent call last):
  File "<string>", line 11, in <module>
  File "/Users/ronan/Documents/projects/python/test/dist/test/eggs/setuptools-0.6c12dev_r88846-py2.7.egg/pkg_resources.py", line 698, in <module>
  ...
  LookupError: no codec search functions registered: can't find encoding

Windows pyinstaller を機能させるのに本当に苦労しましたが、今はそれを手に入れました。最も難しいのは、一貫したエラー メッセージがないことです。私は python と pygame が本当に好きで、この展開のハードルを越えたいと思っています。明らかに、これは私の実際のアプリケーションではありませんが、この "Hello World" を Mac で動作させることができれば、Windows で動作させることで学んだことと組み合わせれば、ほとんどのことを理解できるはずです。また、これを理解できれば、他の pygame 開発者にとって本当に役立つと思います。

4

1 に答える 1

2

macならcx_Freezeを使ったほうがいいかもしれません

于 2013-07-22T03:29:07.743 に答える