You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyinstaller打包pygame游戏生成的exe运行提示找不到资源文件怎么办

问题原因

  • 路径获取逻辑不适配PyInstaller打包环境:你使用os.path.abspath(__file__)获取路径的方式仅在直接运行Python脚本时生效。PyInstaller的--onefile模式运行时,会先将所有内置文件解压到系统临时目录的随机文件夹中,__file__指向的是这个临时目录下的字节码文件路径,而非exe文件实际存放的路径。
  • 资源文件未被打包进程序:你执行的打包命令没有指定将游戏依赖的Pictures等资源文件夹打包进去,解压后的临时目录自然不存在对应资源文件,触发文件不存在报错。
  • 硬编码的路径分隔符\\仅适配Windows系统,不过这不是本次报错的直接原因,但建议修改为跨平台适配的写法避免后续问题。

解决步骤

第一步:修改路径获取与拼接逻辑

兼容直接运行脚本和打包后运行两种场景,修改代码如下:

import os
import sys

# 统一获取基础路径
def get_base_path():
    # 打包后运行的场景,读取PyInstaller内置的临时目录路径
    if getattr(sys, 'frozen', False):
        # 如果你希望资源和exe同目录放置,可替换为 return os.path.dirname(sys.executable)
        return sys._MEIPASS
    # 直接运行py脚本的场景
    else:
        return os.path.dirname(os.path.abspath(__file__))

PathToDir = get_base_path()
# 用os.path.join拼接路径,自动适配不同系统的分隔符
TloIMG = pygame.image.load(os.path.join(PathToDir, "Pictures", "Sceneria1.png"))

其余资源加载逻辑全部替换为上述os.path.join的拼接方式即可。

第二步:调整打包命令

需要通过--add-data参数告知PyInstaller将资源文件夹打包进程序:

  • Windows系统打包命令:
pyinstaller --onefile -w --add-data "Pictures/*;Pictures/" NameOfTheFile.py
  • Mac/Linux系统打包命令:
pyinstaller --onefile -w --add-data "Pictures/*:Pictures/" NameOfTheFile.py

如果还有其他资源文件夹(比如音效、字体文件夹),可追加多个--add-data参数指定即可。


内容的提问来源于stack exchange,提问作者PLrc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:45:03