使用pyinstaller将pygame应用程序转换为可执行文件时出现字体错误

时间:2020-07-06 07:44:51

标签: python debugging pygame pyinstaller executable

我创建了一个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

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

1 个答案:

答案 0 :(得分:0)

如果使用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()