Lightgbm OSError,库未加载

Lightgbm OSError, Library not loaded

如果我只是这样做:

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 才能工作?

我在这里发现了类似的问题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 ..

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

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

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

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

  1. 使用 MacPorts
  2. 安装 clang-5.0
  3. /build 目录中,运行 cmake -DCMAKE_CXX_COMPILER=clang++-mp-5.0 -DCMAKE_C_COMPILER=clang-mp-5.0 ..
  4. 要构建 python 包,请转到 /python_package 目录并修改 setup.py 脚本。 您需要在最后修改函数 compile_cpp() 以检查其他 OS(包括 Mac)的大小写。在silent_call(...)之前添加如下两行: cmake_cmd.append("-DCMAKE_CXX_COMPILER=clang++-mp-5.0") cmake_cmd.append("-DCMAKE_C_COMPILER=clang-mp-5.0")
  5. 运行sudo python setup.py install。享受

在 MAC 你需要安装 open-mpi:

brew install open-mpi

同样的错误,不同的来源:好像我安装了 gcc 8 版本,它需要 gcc 7.

它通过将其切换回上一个 gcc 7 版本来工作:

brew switch gcc 7.3.0_1

以上所有答案都不适合我。 在 Mac 上,如果我使用 brew 安装了 libomp,问题就解决了:参考:link

brew install libomp

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

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

注意:我尝试了 Brew 和 pip 安装,但它们对我不起作用,因为 Azure ML studio 已经下载了其他版本的 LightGBM,这些版本在升级到正确的包时会导致冲突。

我在 M1 MAC 上遇到了完全相同的问题。我试图通过 Jupiter notebook 导入它。此命令解决了问题:

conda install lightgbm