Py2Exe文件最后关闭,可能是由于

时间:2014-12-05 23:31:08

标签: python pygame py2exe

我制作了一个py2exe可执行文件,它是一个"编程测验"。它是在pygame中制作的,当我作为EXE运行时,它一直工作到最后。我假设因为结尾有pygame文本。错误如下。这里的代码部分不作为exe工作,但作为正常的.py:

def endgame():
    global programmer
    if programmer < 0:
        programmer = 0
    font = pygame.font.SysFont(None, 25)
    text = font.render("You are: " + str(programmer) + "% a programmer.", True, black)
    gameDisplay.blit(text, (170,200))

错误:

C:\Python27\Programming Survey\dist>survey.exe
survey.exe:43: RuntimeWarning: use font: DLL load failed: The specified module c
ould not be found.
(ImportError: DLL load failed: The specified module could not be found.)
Traceback (most recent call last):
  File "survey.py", line 223, in <module>
  File "survey.py", line 217, in main
  File "survey.py", line 43, in endgame
  File "pygame\__init__.pyc", line 70, in __getattr__
NotImplementedError: font module not available
(ImportError: DLL load failed: The specified module could not be found.)

2 个答案:

答案 0 :(得分:0)

好的,您的问题是您尝试使用pygame.font,但您的PyGame安装不包含该模块。

正如the docs所说:

  

此模块是可选的,需要SDL_ttf作为依赖项。在尝试使用该模块之前,您应该测试pygame.font是否可用并初始化。

实际上有两个原因导致无法加载:

  1. 在构建PyGame之前没有安装SDL_ttf(或者明确地禁用了它,或者安装了一个预编译的二进制文件来执行其中一个),因此甚至没有内置到PyGame中。< / LI>
  2. 您针对SDL_ttf构建了DLL,但该DLL在运行时不可用。
  3. 无论哪种方式,这意味着您无法使用pygame.font。*如果您的问题是#1,则需要重建PyGame(或获取不同的二进制安装)。如果它是#2,则需要以安装其他SDL DLL的方式安装SDL_ttf.dll

    如果您不确定,请先尝试#2,如果它仍然不起作用,您需要一个新的PyGame版本。

    如果您知道自己在做什么(或者只是想想构建二进制文件的人可能包含对它的支持而不是pygame.font),您可能需要考虑使用pygame.freetype(其中包含{}}界面略有不同)或pygame.ftfontpygame.font构建pygame.freetype)几乎完全替代。您可能甚至想要os.putenv('PYGAME_FREETYPE', '1')或类似内容,这会使pygame.font的新版本尝试pygame.ftfont作为后备。但与Linux用户相比,所有这些都更可能与Linux用户相关。另请注意,它直到1.9.2才包含在标准版本中,截至2014年12月5日,它们仍未发布1.9.2的正式版本。

答案 1 :(得分:0)

通过使用pygame2exe修复,它也使用py2exe,但它有字体dll和这样的预加载,所以它工作。