轻量级gbm出现OSError错误,库未加载。

32

如果我只是这样做:

import lightgbm as lgb

我明白了

python script.py 
Traceback (most recent call last):
File "script.py", line 4, in <module>
import lightgbm as lgb
File "/usr/local/lib/python2.7/site-packages/lightgbm/__init__.py", line 8, in <module>
from .basic import Booster, Dataset
File "/usr/local/lib/python2.7/site-packages/lightgbm/basic.py", line 31, in <module>
_LIB = _load_lib()
File "/usr/local/lib/python2.7/site-packages/lightgbm/basic.py", line 26, in _load_lib
lib = ctypes.cdll.LoadLibrary(lib_path[0])
File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 440, in LoadLibrary
return self._dlltype(name)
File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 362, in __init__
self._handle = _dlopen(self._name, mode)
OSError: dlopen(/usr/local/lib/python2.7/site-packages/lightgbm/lib_lightgbm.so, 6): Library not loaded: /usr/local/opt/gcc/lib/gcc/7/libgomp.1.dylib
Referenced from: /usr/local/lib/python2.7/site-packages/lightgbm/lib_lightgbm.so
Reason: image not found

我似乎已经正确安装了所有东西:

python -m pip install lightgbm
Requirement already satisfied: lightgbm in /usr/local/lib/python2.7/site-packages
Requirement already satisfied: wheel in /usr/local/lib/python2.7/site-packages (from lightgbm)
Requirement already satisfied: scikit-learn in /usr/local/lib/python2.7/site-packages (from lightgbm)
Requirement already satisfied: scipy in /usr/local/lib/python2.7/site-packages (from lightgbm)
Requirement already satisfied: numpy in /usr/local/lib/python2.7/site-packages (from lightgbm)

我的GCC文件夹中有一个6文件夹。我需要安装另一个版本的GCC才能使其正常工作吗?

在此输入图片描述

9个回答

87

上述所有答案对我都没有用。 在Mac上,如果我使用brew安装了libomp,问题就解决了:参考:链接

brew install libomp

2
这对我有用。谢谢。上面的东西没用! - Angela Roux
2
这应该是更新后的答案。我不需要接受的答案中提到的任何步骤。 - daze
1
我也可以用这个方法。简单有效。 - kannandreams
1
我正在虚拟环境 (venv) 中运行 Python,这个答案解决了 OSError。 - stereo
1
我也在macOS 11.6.5上成功了,谢谢! - Andrea Grioni
显示剩余3条评论

16

我在M1 MAC上遇到了完全相同的问题。我尝试通过Jupyter笔记本导入它。这个命令解决了这个问题:

conda install lightgbm

14

我在这里发现了一个类似的问题 LightGBM
答案和评论可能对你有所帮助。

在Mac上构建LightGBM:

brew install cmake  
brew install gcc --without-multilib  
git clone --recursive https://github.com/Microsoft/LightGBM ; cd LightGBM  
mkdir build ; cd build  
cmake ..   
make -j  

然后安装:

cd ../python-packages  
sudo python setup.py install --precompile

正如@ecodan所说,您可能需要强制Mac使用GCC和G++而不是默认编译器。因此,不要使用cmake ..构建,请尝试:

cmake -DCMAKE_C_COMPILER=/usr/local/Cellar/gcc/6.1.0/bin/gcc-6 -DCMAKE_CXX_COMPILER=/usr/local/Cellar/gcc/6.1.0/bin/g++-6 ..

调整版本以匹配您的版本。


5
就翻译而言,这段内容的意思是,在使用 cmake 命令时,由于我的 HighSierra Mac 更喜欢 AppleCLang 而不是 GCC,所以我必须强制指定路径为:cmake -DCMAKE_C_COMPILER=/usr/local/Cellar/gcc/6.1.0/bin/gcc-6 -DCMAKE_CXX_COMPILER=/usr/local/Cellar/gcc/6.1.0/bin/g++-6 .. - ecodan
1
我可以使用pip安装lightgbm吗?我尝试过了,但是我收到了相同的错误信息,即库无法加载。 - HHH
1
文件夹名称为python-package(没有s)(在LightGBM版本2.1.2中)。 - Anand
“--without-multilib”不再存在。 - dada
只需删除“--without-multilib”参数,它就可以正常工作。 - dada
同样对于 cmake,通过执行 ls /usr/local/Cellar/gcc 来检查您拥有的版本,并使用您拥有的版本代替帖子中显示的版本。 - dada

4
在MAC系统中,您需要安装open-mpi:
brew install open-mpi

2

相同的错误,不同的来源:看起来我安装了 gcc 8 版本,但需要的是 gcc 7。

通过切换回上一个 gcc 7 版本,问题得到解决:

brew switch gcc 7.3.0_1

嗨,我遇到了完全相同的问题并使用gcc8。我想尝试您的建议。但是,“brew switch gcc 7.3.0_1”无法工作,因为它没有安装此版本。您知道如何安装此版本吗? - HappyCoding
如何在保留gcc 8的情况下安装gcc 7 - MJeremy

1

对于使用macports的用户,请将brew解决方案的开头替换为:

  1. port install gcc7 cmake
  2. export CXX=g++-mp-7 CC=gcc-mp-7

是的,我也遇到了同样的问题。请查看 https://github.com/Microsoft/LightGBM/blob/master/docs/Installation-Guide.rst#macos - Yukun

1

在安装了MacPorts的MacOS High Sierra上,我进行了以下操作:

  1. 使用MacPorts安装clang-5.0
  2. /build目录内运行以下命令:cmake -DCMAKE_CXX_COMPILER=clang++-mp-5.0 -DCMAKE_C_COMPILER=clang-mp-5.0 ..
  3. 要构建Python软件包,请进入/python_package目录并修改setup.py脚本。你需要修改函数compile_cpp(),该函数检查其他操作系统(包括Mac)的情况。在silent_call(...)之前,添加以下两行代码: cmake_cmd.append("-DCMAKE_CXX_COMPILER=clang++-mp-5.0") cmake_cmd.append("-DCMAKE_C_COMPILER=clang-mp-5.0")
  4. 运行sudo python setup.py install。享受吧!

0

我使用了PyCharm生成的这个命令,它对我很有效。

conda install -p { < =替换为USER_HOME_DIR>}/anaconda3 lightgbm -y

注意:我尝试了Brew和pip安装,但由于Azure ML Studio已经下载了其他版本的LightGBM,导致升级到正确的软件包时发生冲突,所以它们对我无效。


0
conda install -c conda-forge lightgbm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接