M1芯片Mac运行lightgbm出现libomp相关image not found错误如何解决
错误触发原因
这个报错是M1系列Mac的架构兼容性问题导致的:
- 你安装的LightGBM预编译二进制包是基于x86_64架构构建的,默认会去x86架构Homebrew的标准路径
/usr/local/opt/libomp/lib/查找libomp依赖 - M1芯片的Mac默认安装的Arm版Homebrew路径为
/opt/homebrew/,就算你已经安装了libomp,x86版本的LightGBM也无法识别对应路径的库。之前创建软链接失败大概率是因为你安装的libomp是Arm架构版本,和x86架构的LightGBM不兼容。
可行解决方法
方案一:安装原生Arm架构的LightGBM(推荐,性能最优)
操作步骤:
- 先确认你使用的Python是Arm64架构版本,执行命令
python3 -c "import platform;print(platform.machine())",输出arm64即为符合要求的版本 - 卸载已安装的LightGBM:用pip的话执行
pip uninstall lightgbm,用poetry的话执行poetry remove lightgbm - 安装Arm版libomp:
brew install libomp - 从源码编译安装LightGBM:执行命令
pip install lightgbm --install-option=--nomp --no-binary lightgbm,poetry环境可指定编译参数完成安装
方案二:适配x86版本Python环境
如果你当前必须使用x86架构的Python环境,可按以下步骤操作:
- 打开访达 -> 应用程序 -> 实用工具 -> 右键点击「终端」,选择「显示简介」,勾选「使用Rosetta打开」,重启终端
- 安装x86版本的Homebrew,安装完成后默认路径为
/usr/local/ - 用x86版本Homebrew安装libomp:
/usr/local/bin/brew install libomp - 重新安装LightGBM即可正常加载
方案三:临时兼容方案(不建议长期使用)
如果不想重新编译组件,可通过设置动态库加载路径临时解决问题:
执行命令export DYLD_LIBRARY_PATH=/opt/homebrew/opt/libomp/lib:$DYLD_LIBRARY_PATH后再运行你的代码即可。该配置仅在当前终端会话生效,如需永久生效可将这条命令添加到当前用户的~/.zshrc或~/.bash_profile配置文件中。
内容的提问来源于stack exchange,提问作者Edward Chinaski
相关产品推荐
相关产品推荐

