由于OS错误:libomp.dylib'(没有这样的文件),我无法在Mac上运行lightgbm。

8

我无法在我的MAC上运行lightgbm。我已经尝试了所有找到的解决方法,但是我无法摆脱这个问题。

当我导入lightgbm时,出现以下OSERROR:

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
Input In [2], in <cell line: 6>()
  4 from sklearn.metrics import accuracy_score
  5 import time
----> 6 from lightgbm import LGBMClassifier
  7 from xgboost import XGBClassifier
  8 print('make classification ...')

File ~/opt/anaconda3/lib/python3.9/site-packages/lightgbm/__init__.py:8, in <module>
  2 """LightGBM, Light Gradient Boosting Machine.
  3 
  4 Contributors: https://github.com/microsoft/LightGBM/graphs/contributors.
  5 """
  6 from pathlib import Path
----> 8 from .basic import Booster, Dataset, Sequence, register_logger
  9 from .callback import early_stopping, log_evaluation, print_evaluation, record_evaluation, reset_parameter
 10 from .engine import CVBooster, cv, train

File ~/opt/anaconda3/lib/python3.9/site-packages/lightgbm/basic.py:110, in <module>
106         raise LightGBMError(lib.LGBM_GetLastError().decode('utf-8'))
107     return lib
--> 110 _LIB = _load_lib()
113 NUMERIC_TYPES = (int, float, bool)
116 def _safe_call(ret: int) -> None:

File ~/opt/anaconda3/lib/python3.9/site-packages/lightgbm/basic.py:101, in _load_lib()
 99 if len(lib_path) == 0:
100     return None
--> 101 lib = ctypes.cdll.LoadLibrary(lib_path[0])
102 lib.LGBM_GetLastError.restype = ctypes.c_char_p
103 callback = ctypes.CFUNCTYPE(None, ctypes.c_char_p)

File ~/opt/anaconda3/lib/python3.9/ctypes/__init__.py:460, in LibraryLoader.LoadLibrary(self, name)
459 def LoadLibrary(self, name):
--> 460     return self._dlltype(name)

File ~/opt/anaconda3/lib/python3.9/ctypes/__init__.py:382, in CDLL.__init__(self, name, mode, handle, use_errno, use_last_error, winmode)
379 self._FuncPtr = _FuncPtr
381 if handle is None:
--> 382     self._handle = _dlopen(self._name, mode)
383 else:
384     self._handle = handle

OSError: dlopen(/Users/pedropestana/opt/anaconda3/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so, 0x0006): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib
  Referenced from: /Users/pedropestana/opt/anaconda3/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so
  Reason: tried: '/usr/local/opt/libomp/lib/libomp.dylib' (no such file), '/usr/local/lib/libomp.dylib' (no such file), '/usr/lib/libomp.dylib' (no such file).   

我已经尝试重新安装必要的库以安装LightGBM,但问题仍然存在。

4个回答

13
对于Linux用户,需要glibc >= 2.14。此外,在某些罕见情况下,当您在导入LightGBM时遇到“OSError: libgomp.so.1: cannot open shared object file: No such file or directory”错误时,您需要单独安装OpenMP运行库(使用您的软件包管理器并搜索lib[g | i] omp来执行此操作)。
对于macOS用户(我们为3个最新的macOS版本提供轮子):
从版本2.2.1开始,分发轮子中的库文件是由Apple Clang(Xcode_8.3.3用于版本2.2.1-2.3.1,Xcode_9.4.1用于版本2.3.2-3.3.2和Xcode_10.3从版本4.0.0开始)编译器构建的。这意味着您不再需要安装gcc编译器。相反,您需要安装OpenMP库,该库在使用Apple Clang编译器的系统上运行LightGBM所需。您可以通过以下命令安装OpenMP库:brew install libomp。

-- LightGBM Python-package docs

简而言之:对于,请执行brew install libomp


5
对我来说这样行不通。 - Juan Luis Ruiz-tagle
1
这对我有用。谢谢你提供的一行解决方案! - Tapa Dipti Sitaula

2

2

对于我的Mac Ventura,

我这样做是为了让它工作:

# Install x86_64 version of home-brew
% cd ~/Downloads
% mkdir homebrew
% curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew 
% sudo mv homebrew /usr/local/homebrew

然后将这个添加到~/.zshrc文件中。
export PATH=$HOME/bin:/usr/local/homebrew/bin:$PATH

然后,
# load the path
% source ~/.zshrc  # to export the PATH above

# Install x86_64 version of libomp at required directory in error message
% arch -x86_64 /usr/local/homebrew/bin/brew uninstall libomp # maybe needed
% arch -x86_64 /usr/local/homebrew/bin/brew install libomp
% sudo mkdir -p /usr/local/opt/libomp/lib/
% sudo ln -s /usr/local/homebrew/opt/libomp/lib/libomp.dylib /usr/local/opt/libomp/lib/libomp.dylib

这个解决方案对我起作用了。我不需要重新安装Brew。只需使用x86_64命令进行安装就足够了 - m1 Ventura。 - justacoder
很遗憾,我不得不再次安装Homebrew,因为它会在后面抛出不兼容的架构错误。 - undefined

1

我曾经遇到过同样的问题,对我来说解决方法很简单,就是通过conda而不是pip安装lightgbm:conda install -c conda-forge lightgbm

我认为通过brew也可以解决问题,但只有在Mac上将homebrew安装在/usr/local时才有效。对我来说,homebrew安装在/opt/homebrew,因此我无法通过brew正确安装libomp。使用conda,一切都很顺利。


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