【问题标题】:Problem creating executable pygame - pyinstaller创建可执行pygame的问题 - pyinstaller
【发布时间】:2019-02-06 10:22:30
【问题描述】:

我最近开始为我的女儿制作一个游戏来帮助我学习单词。我继续前进并决定创建可执行文件(我将在许多其他游戏中这样做)。由于声音和音乐,这款游戏有些不同。我已经尝试了我能想到的一切,搜索了我能想到的一切等等。这是 CMD 报告的错误,错误是指一个声音文件。我尝试使用--add-data 直接添加文件我尝试将可执行文件放在与声音文件相同的目录中(不应该需要它,因为它应该已经捆绑了它)。否则脚本运行得非常好(来自 CMD 等)任何想法?

C:\Users\launc\Desktop\Coding\Games\g_sight_words\dist>sight_words.exe pygame 1.9.4 Hello from the pygame community. https://www.pygame.org/contribute.html Traceback (most recent call last): File "sight_words.py", line 5, in <module> File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 677, in _load_unlocked File "c:\users\launc\appdata\local\programs\python\python37-32\lib\site- packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module exec(bytecode, module.__dict__) File "settings.py", line 21, in <module> pygame.error: Unable to open file 'the.wav' [9892] Failed to execute script sight_words

【问题讨论】:

  • 请阅读如何提供minimal reproducible example 以及为什么它很重要
  • 并且不要使用引用块来引用输出,我知道这听起来合乎逻辑。但是使用代码块来保留缩进和其他东西。到目前为止,任何人都几乎无法阅读该错误消息。
  • 其次,如果您向我们展示了如何实际捆绑可执行文件,我们将不胜感激。您是否使用-F 标志将其捆绑为一个可执行文件,您如何传入--add-data?你的安装脚本是什么样的? tihs 可能会对您有所帮助。

标签: audio pygame executable pyinstaller


【解决方案1】:

您的 .spec 文件是什么样的?这是PyInstaller docs on adding data files

基本上你需要添加类似的东西:

a = Analysis(...
 datas=[ ('the.wav', '.') ],
 ...
 )

这会将您的声音文件('the.wav')放入已编译应用程序的根目录(第二个参数,'.')

然后在您的应用程序中,您可以检查您是从源代码运行还是作为已编译的可执行文件运行。我使用辅助函数:

def my_path(path_name):
    """Return the appropriate path for data files based on execution context"""
    if getattr( sys, 'frozen', False ):
        # running in a bundle
        return(os.path.join(sys._MEIPASS, path_name))
    else:
        # running live
        return path_name

那么您的应用程序代码将如下所示:

the_sound = pygame.mixer.Sound(my_path("the.wav"))

【讨论】:

    猜你喜欢
    • 2018-08-16
    • 2020-11-26
    • 2011-08-23
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    相关资源
    最近更新 更多