我制作了一个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.)
答案 0 :(得分:0)
好的,您的问题是您尝试使用pygame.font
,但您的PyGame安装不包含该模块。
正如the docs所说:
此模块是可选的,需要
SDL_ttf
作为依赖项。在尝试使用该模块之前,您应该测试pygame.font
是否可用并初始化。
实际上有两个原因导致无法加载:
SDL_ttf
(或者明确地禁用了它,或者安装了一个预编译的二进制文件来执行其中一个),因此甚至没有内置到PyGame中。< / LI>
SDL_ttf
构建了DLL,但该DLL在运行时不可用。无论哪种方式,这意味着您无法使用pygame.font
。*如果您的问题是#1,则需要重建PyGame(或获取不同的二进制安装)。如果它是#2,则需要以安装其他SDL DLL的方式安装SDL_ttf.dll
。
如果您不确定,请先尝试#2,如果它仍然不起作用,您需要一个新的PyGame版本。
如果您知道自己在做什么(或者只是想想构建二进制文件的人可能包含对它的支持而不是pygame.font
),您可能需要考虑使用pygame.freetype
(其中包含{}}界面略有不同)或pygame.ftfont
(pygame.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和这样的预加载,所以它工作。