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

Mac系统运行Pygame代码加载资源报FileNotFoundError错误如何解决

macOS运行Pygame太空射击游戏FileNotFoundError解决方案

该报错核心原因是相对路径查找基准与预期不一致,按以下步骤修改即可解决:


1. 修正目录结构

从报错信息可见你的代码文件Draft with sounds.py存放在assets文件夹内,而代码中写的是从assets文件夹下读取图片,会变成查找assets/assets/xxx.png的错误路径。请调整为如下目录结构:

PYTHON NOW/
├── Draft with sounds.py (代码文件移出assets文件夹,放在该层级)
├── bullet.wav
├── hit.wav
├── music.wav
└── assets/
    ├── pixel_ship_red_small.png
    ├── pixel_ship_green_small.png
    └── pixel_ship_blue_small.png

2. 统一路径基准,避免运行目录影响

Mac下无论用终端还是IDE运行代码,都可能出现「当前工作目录≠代码文件所在目录」的问题,所以需要固定以代码文件所在目录作为路径拼接基准。
在代码导入模块后,新增一行获取基准目录:

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

所有资源加载位置都用该基准目录拼接路径:

# 声音加载修改为
bulletSound = pygame.mixer.Sound(os.path.join(BASE_DIR, "bullet.wav"))
hitSound = pygame.mixer.Sound(os.path.join(BASE_DIR, "hit.wav"))
music = pygame.mixer.music.load(os.path.join(BASE_DIR, "music.wav"))

# 图片加载修改为
RED_SPACE_SHIP = pygame.image.load(os.path.join(BASE_DIR, "assets", "pixel_ship_red_small.png"))
GREEN_SPACE_SHIP = pygame.image.load(os.path.join(BASE_DIR, "assets", "pixel_ship_green_small.png"))
BLUE_SPACE_SHIP = pygame.image.load(os.path.join(BASE_DIR, "assets", "pixel_ship_blue_small.png"))

3. 清理冗余代码

你当前提供的代码重复写了一遍导入、初始化、资源加载逻辑,请删掉后半段重复的代码,避免运行报错。

4. 调试排查(如果修改后仍报错)

在资源加载代码前新增打印语句,确认拼接后的路径是否正确:

print(os.path.join(BASE_DIR, "assets", "pixel_ship_red_small.png"))

运行后对照输出的路径,在访达中检查对应位置文件是否存在,同时确认文件名大小写完全匹配(macOS部分分区开启大小写敏感,大小写不一致也会触发找不到报错)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 08:45:05