首页 > 解决方案 > 使用 pyinstaller 将 pygame 应用程序转换为可执行文件时出现字体错误

问题描述

我创建了一个 pygame 应用程序,它有一个主要的 python 文件和一个资产文件夹。我已经使用 pyinstaller 将应用程序转换为可执行文件,但是每次我收到错误 - 当我解决它们时,就会出现不同的错误。我怀疑我最近遇到的错误与我的 pygame 文件中的文本有关。

这是我使用的 pygame 字体行:

font = pygame.font.SysFont("Arial", 32)

我尝试使用 .ttf 文件并将它们复制到与我的 main.py 文件相同的文件夹中,但这也不起作用。我还确保将我的资产文件夹复制到与 main.app 文件相同的文件夹中,但这也没有帮助。

我不确定这条错误消息告诉我什么,而且这条消息似乎没有其他问题(我的代码中没有在此错误消息中引用的行供我检查)。

Fatal Python error: (pygame parachute) Segmentation Fault
Traceback (most recent call last):
  File "pygame/pkgdata.py", line 50, in getResource
  File "site-packages/pkg_resources/__init__.py", line 1134, in resource_exists
  File "site-packages/pkg_resources/__init__.py", line 1404, in has_resource
  File "site-packages/pkg_resources/__init__.py", line 1473, in _has
NotImplementedError: Can't perform this operation for unregistered loader type

任何帮助都会很棒,谢谢!

标签: pythondebuggingpygamepyinstallerexecutable

解决方案


如果你使用 ttf 文件,那么你需要直接导入它们而不是使用SysFont. 举个例子:

size = 12
myfont = pygame.font.Font("Arial.ttf",size)

Arial.ttf 还需要放在可执行文件所在的同一文件夹中,或者如果您有更深的文件夹结构,请使用相对路径(并且文件夹也需要位于可执行文件旁边):

size = 12
myfont = pygame.font.Font("./myfolder/Arial.ttf",size)

出于测试目的,使用以下命令查看您从哪个文件夹开始、设置您的相对路径以及了解您在哪里寻找 ttf 文件也可能会有所帮助:

import os    
os.getcwd() 

推荐阅读