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
相关产品推荐
相关产品推荐

