optuna导入成功但导入optuna.integration.lightgbm报OSError错误
问题背景
- 操作前提:已删除所有Anaconda关联文件、清除对应PATH环境变量配置,当前开发环境为Jupyter Lab + Python 3.10
- 正常表现:执行
import optuna无任何异常,可正常运行 - 报错触发:执行
import optuna.integration.lightgbm as lgb时抛出OSError类型错误 - 报错核心:加载LightGBM安装目录下的
lib_lightgbm.so动态库失败,原因是该库依赖的/usr/local/opt/libomp/lib/libomp.dylib文件不存在,系统在预设的两个查找路径(/usr/local/opt/libomp/lib/、/usr/lib/)下均未找到对应文件
核心报错片段如下:
OSError: dlopen(/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/lightgbm/lib_lightgbm.so, 0x0006): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib Referenced from: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/lightgbm/lib_lightgbm.so Reason: tried: '/usr/local/opt/libomp/lib/libomp.dylib' (no such file), '/usr/lib/libomp.dylib' (no such file)
问题原因
之前用Anaconda环境时,发行版会把LightGBM依赖的OpenMP(即报错里提到的libomp)运行库一起打包自带,卸载Anaconda后,当前使用的独立Python环境没有带这个系统级依赖。pip默认安装的LightGBM是预编译包,写死了去固定路径查找libomp库,系统全局没装这个库就会触发动态库加载失败的报错。
解决方法
按顺序操作即可修复:
- 打开系统终端,执行命令安装libomp系统依赖:
brew install libomp
- 装完先重启Jupyter Lab内核,重新跑导入代码测试,如果还是报相同错误,根据自己的Mac芯片类型执行对应命令创建路径软链接:
- Intel芯片Mac执行:
sudo mkdir -p /usr/local/opt/libomp/lib sudo ln -s /usr/local/Cellar/libomp/$(ls /usr/local/Cellar/libomp)/lib/libomp.dylib /usr/local/opt/libomp/lib/libomp.dylib
- Apple Silicon(M1/M2/M3系列)芯片Mac执行:
sudo mkdir -p /usr/local/opt/libomp/lib sudo ln -s /opt/homebrew/Cellar/libomp/$(ls /opt/homebrew/Cellar/libomp)/lib/libomp.dylib /usr/local/opt/libomp/lib/libomp.dylib
- 不想手动配软链接的话,直接在终端执行命令从源码重新编译安装LightGBM,安装过程会自动适配系统上的libomp路径,不需要额外配置:
pip uninstall -y lightgbm pip install lightgbm --no-binary lightgbm
- 所有操作完成后重启Jupyter Lab内核,重新执行导入代码即可正常运行。
内容的提问来源于stack exchange,提问作者Rik
相关产品推荐
相关产品推荐

