Pygame Mixer无法使用:libmp3lame.0.dylib加载失败求助
问题重现代码
import pygame pygame.init() pygame.mixer.init()
报错信息
RuntimeWarning: use mixer: dlopen(/Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/mixer.cpython-39-darwin.so, 2): Library not loaded: @loader_path/libmp3lame.0.dylib
Referenced from: /Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/.dylibs/libsndfile.1.0.34.dylib
Reason: no suitable image found. Did find:
/Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/.dylibs/libmp3lame.0.dylib: cannot load 'libmp3lame.0.dylib' (load command 0x80000034 is unknown)
/Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/.dylibs/libmp3lame.0.dylib: cannot load 'libmp3lame.0.dylib' (load command 0x80000034 is unknown)
(ImportError: dlopen(/Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/mixer.cpython-39-darwin.so, 2): Library not loaded: @loader_path/libmp3lame.0.dylib
Referenced from: /Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/.dylibs/libsndfile.1.0.34.dylib
Reason: no suitable image found. Did find:
/Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/.dylibs/libmp3lame.0.dylib: cannot load 'libmp3lame.0.dylib' (load command 0x80000034 is unknown)
/Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/.dylibs/libmp3lame.0.dylib: cannot load 'libmp3lame.0.dylib' (load command 0x80000034 is unknown))
pygame.mixer.get_sdl_mixer_version()
Traceback (most recent call last):
File "/Users/kids/PycharmProjects/PySynth/main.py", line 11, in
pygame.mixer.get_sdl_mixer_version()
File "/Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/init.py", line 70, in getattr
raise NotImplementedError(missing_msg)
NotImplementedError: mixer module not available (ImportError: dlopen(/Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/mixer.cpython-39-darwin.so, 2): Library not loaded: @loader_path/libmp3lame.0.dylib
Referenced from: /Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/.dylibs/libsndfile.1.0.34.dylib
Reason: no suitable image found. Did find:
/Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/.dylibs/libmp3lame.0.dylib: cannot load 'libmp3lame.0.dylib' (load command 0x80000034 is unknown)
/Users/kids/PycharmProjects/PySynth/venv/lib/python3.9/site-packages/pygame/.dylibs/libmp3lame.0.dylib: cannot load 'libmp3lame.0.dylib' (load command 0x80000034 is unknown))
环境信息
- MacOS 10.14 (Mojave)
- Python 3.9.6
- Pygame 2.4.0
- PyCharm + 虚拟环境(Venv)
已尝试操作
- 确认虚拟环境中存在
libmp3lame.0.dylib文件 - 重新安装Pygame
解决方案
方案1:降级Pygame到兼容Mojave的版本
Pygame 2.2及以上版本的预编译包使用了MacOS 10.15+才支持的加载命令(load command 0x80000034),Mojave无法识别。降级到2.1.3版本可解决:
# 卸载当前版本 pip uninstall -y pygame # 安装兼容版本 pip install pygame==2.1.3
方案2:从源码编译Pygame(依赖Homebrew)
如果需要使用高版本Pygame,可通过源码编译适配Mojave:
- 安装依赖库:
brew install sdl2 sdl2_mixer sdl2_image sdl2_ttf sdl2_gfx libmp3lame
- 卸载现有Pygame:
pip uninstall -y pygame
- 从源码安装:
pip install pygame --no-binary pygame
方案3:验证Python环境兼容性
确保Python 3.9.6是针对MacOS Mojave编译的。如果是从Python官网下载的安装包,需确认是支持10.14的版本(Python 3.9最后支持Mojave的版本是3.9.13)。若当前Python版本存在兼容性问题,可尝试降级到Python 3.8.x。
内容的提问来源于stack exchange,提问作者Aaryan

