未修改代码却触发Pygame报错:尝试访问无效地址
解决Pygame加载MP3时libmpg123.dll报错的建议
遇到这种代码没改动却突然炸锅的dll加载问题确实挺闹心的,我整理了几个针对性的排查和解决方向,你可以逐一试试:
检查路径空格与字符串格式
你的音频文件名带空格(background music.mp3),虽然Python理论上支持带空格的路径,但Windows环境下偶尔会出现解析异常。可以试试:- 把文件名改成无空格的形式,比如
background_music.mp3,同时更新代码里的加载路径 - 或者在代码里使用原始字符串格式:
pygame.mixer.music.load(r'./sounds/background music.mp3')
- 把文件名改成无空格的形式,比如
重新验证Pygame与libmpg123.dll的兼容性
即便dll文件存在,也可能出现损坏、版本不匹配的情况:- 先完全卸载当前Pygame:
pip uninstall pygame - 重新安装适配你Python版本的Pygame:
pip install pygame
注意要确保Python和Pygame的位数一致(比如都是64位),避免dll位数不兼容导致的地址访问错误。
- 先完全卸载当前Pygame:
确认脚本运行的工作目录
有时候IDE或终端的工作目录不是项目根目录,导致相对路径找不到文件。可以在加载音频前添加代码打印当前工作目录:import os print(os.getcwd())如果输出不是你的项目根目录,要么在运行脚本前切换到正确目录,要么改用音频文件的绝对路径加载。
排查文件权限或dll完整性
- 右键点击Pygame安装目录中的
libmpg123.dll,检查“安全”选项卡下当前用户是否拥有读取权限 - 可以尝试将该dll复制到你的项目
sounds目录下,临时测试是否能正常加载(不推荐长期这么做,但能快速排查问题)
- 右键点击Pygame安装目录中的
验证音频文件本身是否损坏
虽然昨天还能正常运行,但不排除音频文件意外损坏的可能:- 用本地播放器打开
background music.mp3,确认能正常播放 - 换一个已知可用的MP3文件替换,测试是否还会出现相同报错
- 用本地播放器打开
内容的提问来源于stack exchange,提问作者Nircniv
相关产品推荐
相关产品推荐

