【问题标题】:Lightgbm OSError, Library not loadedLightgbm OSError,未加载库
【发布时间】:2017-07-05 23:51:04
【问题描述】:

如果我只是这样做:

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

【问题讨论】:

    标签: python macos lightgbm


    【解决方案1】:

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

    brew install libomp
    

    【讨论】:

    • 这对我有用。谢谢。上面的东西都没用!
    • 这应该是更新的答案。我不需要接受的答案中所述的任何步骤。
    • 也适合我。简单的解决方案。
    • 我在虚拟环境 (venv) 中运行 python,这个答案解决了 OSError。
    【解决方案2】:

    我在 M1 MAC 上遇到了同样的问题。我试图通过 Jupiter notebook 导入它。这个命令解决了这个问题:

    conda install lightgbm
    

    【讨论】:

      【解决方案3】:

      在 MAC 上你需要安装 open-mpi:

      brew install open-mpi
      

      【讨论】:

        【解决方案4】:

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

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

        brew switch gcc 7.3.0_1
        

        【讨论】:

        • 嗨,我遇到了完全相同的问题并使用 gcc8。我想试试你的建议。但是,brew switch gcc 7.3.0_1 不起作用,因为它没有安装此版本。你知道如何安装这个版本吗?
        • 如何install gcc 7同时保持gcc 8
        【解决方案5】:

        在安装了 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。享受

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

          【解决方案7】:

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

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

          【讨论】:

          • FWIW,我的 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 ..
          • 我可以做 pip install lightgbm 吗?我这样做了,我收到了与库未加载相同的错误消息。
          • 文件夹名称是python-package(不带s)(在LightGBM 2.1.2版本中)
          • --without-multilib 不存在了
          • 只要删除--without-multilib就可以了
          【解决方案8】:

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

          conda install -p { }/anaconda3 lightgbm -y

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-10-04
            • 2020-12-06
            • 2020-05-16
            • 2022-11-18
            • 2022-08-05
            • 2021-10-19
            • 1970-01-01
            相关资源
            最近更新 更多