执行pyinstaller .exe文件时,pygame引发错误

时间:2020-08-18 23:16:42

标签: python tkinter pygame exe pyinstaller

我主要使用Tkinter制作一个小游戏,但是对于声音,我使用pygame。

我一直试图制作一个.exe文件,但是执行时它给我一个错误。

pygame.init()

self.sound_player_shot = pygame.mixer.Sound('sounds/shot.wav')
self.sound_gameover = pygame.mixer.Sound('sounds/gameover.wav')

pygame.mixer.music.load('sounds/soundtrack.mp3')
pygame.mixer.music.play(-1)

那是我使用的pygame中唯一的代码,在创建.exe文件并将所有数据文件夹复制到dist文件夹后,执行该错误时会发生该情况:

Exception in Tkinter callback
Traceback (most recent call last):
  File "tkinter\__init__.py", line 1883, in __call__
  File "space_shooter.py", line 1292, in start_game
  File "space_shooter.py", line 115, in __init__
pygame.error

sounds文件夹位于space_shooter.py的同一文件夹中,而我所有其他较小的项目都只需将所有数据文件夹复制到dist中即可工作。

谢谢!

2 个答案:

答案 0 :(得分:0)

您是否检查过指定用于加载声音文件的路径是否确实是您打算使用的路径?一个选项可能是print(path)并从CMD启动exe以便手动检查它。

如果没有更具体的错误消息,并且不知道错误实际上是在哪一行产生的,则很难给出更具体的答案。

此外,我建议您使用os模块来获取和设置路径:

import os
dirname = os.path.dirname(__file__)
filename = os.path.join(dirname, 'relative/path/to/file/you/want.mp3')

PS:您可能想考虑重构“ space_shooter.py”文件,在我看来,一个文件中的1292行听起来有些长。

答案 1 :(得分:0)

可以在编译时将数据包含在pyinstaller编译的程序中。在那里,您可以使用程序本身中使用的别名路径将路径链接到计算机上的实际文件(相对或绝对)。

The documentation很好地描述了此过程。