pygame 项目在 IDE 中工作,在我将其转换为 .exe 和 运行 之后,游戏 window 打开半秒然后关闭

pygame project works in IDE, after I converted it to .exe and run it, the game window opens for half a second before closing

同样,这在 PyCharm 中工作得很好。我按照 Space Invaders Game toturial 在 PyCharm 中编写脚本,并在代码中调用一些文件,如“ufo.png”。我需要一些帮助来使我的代码的 .exe 达到 运行,就像在 IDE 中一样。我使用 pyinstaller 将 main.py 转换为 exe,它在 C:\Users\MyName\PycharmProjects\pygame\dist 文件夹中显示为 main.exe

当我尝试 运行 exe(通过双击 main.exe)命令提示符会打开 2 秒左右,游戏 window 会很快打开并且它的标题是“space 入侵者”,就像它在 IDE.

中的标题一样

唯一的例外是它立即关闭而不显示任何内容。游戏 window 和命令提示符都会立即关闭。当我通过在右侧 CD 下的命令提示符中调用代码 运行 代码时,它告诉我负责的错误:

C:\Users\MyName\PycharmProjects\pygame\dist>main.exe
pygame 2.0.2 (SDL 2.0.16, Python 3.9.5)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
  File "main.py", line 73, in <module>
    font = pygame.font.Font("freesansbold.ttf", 32)
TypeError: expected str, bytes or os.PathLike object, not BytesIO
[1840] Failed to execute script 'main' due to unhandled exception!

我从 IDE 移动了所有文件(这里是我程序中使用的 IDE 文件)

所以我复制了这些文件并将它们移动到与 main.exe 相同的文件夹中,我认为调用这些文件存在一些问题。

我是否需要在其他地方包含 png 和其他内容,或者我是否需要更改我的一些代码? 这是命令提示符被绊倒的地方。

font = pygame.font.Font("freesansbold.ttf", 32)

我不知道我能做些什么来修复它,几个小时以来我一直在寻找答案。如果有人能提供帮助,将不胜感激。

我明白了。问题是字体。 freesansbold.ttf目录中不存在。

我做了什么:

  1. 我去了C:\Windows\Fonts
  2. 我抄出来了arial.ttf
  3. 转到存储我的代码的位置并将其添加到同一文件夹。

看起来像这样:

之后,我将 main.py 重新打包为 main.exe,将其从 dist 文件中删除,并将其与其余代码放在一起,如上图所示,程序能够访问该字体并且代码正确执行。