【问题标题】:M1 Mac returns OSError: Library not loadedM1 Mac 返回 OSError: Library not loaded
【发布时间】:2022-12-18 20:40:59
【问题描述】:

我正在尝试使用 from darts. models import ExponentialSmoothing 从飞镖包中导入预测模型,并返回以下错误:

OSError: dlopen(/Users/sp/opt/anaconda3/envs/august/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so, 0x0006): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib Referenced from: /Users/sp/opt/anaconda3/envs/august/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 时遇到同样的问题,并尝试了所有这些修复。我试过 brew install libomp,我卸载并重新安装了 Anaconda,我使用了不同的环境,我安装了 gcc 和 cmake,但没有任何效果。我有一台带 M1 芯片的 MacBook Pro,正在使用 Spyder 和 Anaconda。有人对此有答案吗?

我的代码,直接取自 darts 包站点,其输出如下:


import darts

from darts import TimeSeries

# Read a pandas DataFrame

df = pd.read_csv('/Users/sp/Documents/Skripsie/airline-passenger-traffic.csv')

# Create a TimeSeries, specifying the time and value columns

series = TimeSeries.from_dataframe(df, '1949-01', '112')

# Set aside the last 36 months as a validation series

train, val = series[:-36], series[-36:]

from darts.models import ExponentialSmoothing
Traceback (most recent call last):

  File "/var/folders/51/7qn6p5813zd3dw8p2c_t3btr0000gn/T/ipykernel_68567/3838417146.py", line 1, in <module>
    from darts.models import ExponentialSmoothing

  File "/Users/sp/opt/anaconda3/envs/august/lib/python3.9/site-packages/darts/models/__init__.py", line 46, in <module>
    from darts.models.forecasting.gradient_boosted_model import LightGBMModel

  File "/Users/sp/opt/anaconda3/envs/august/lib/python3.9/site-packages/darts/models/forecasting/gradient_boosted_model.py", line 13, in <module>
    import lightgbm as lgb

  File "/Users/sp/opt/anaconda3/envs/august/lib/python3.9/site-packages/lightgbm/__init__.py", line 8, in <module>
    from .basic import Booster, Dataset, Sequence, register_logger

  File "/Users/sp/opt/anaconda3/envs/august/lib/python3.9/site-packages/lightgbm/basic.py", line 110, in <module>
    _LIB = _load_lib()

  File "/Users/sp/opt/anaconda3/envs/august/lib/python3.9/site-packages/lightgbm/basic.py", line 101, in _load_lib
    lib = ctypes.cdll.LoadLibrary(lib_path[0])

  File "/Users/sp/opt/anaconda3/envs/august/lib/python3.9/ctypes/__init__.py", line 460, in LoadLibrary
    return self._dlltype(name)

  File "/Users/sp/opt/anaconda3/envs/august/lib/python3.9/ctypes/__init__.py", line 382, in __init__
    self._handle = _dlopen(self._name, mode)

OSError: dlopen(/Users/sp/opt/anaconda3/envs/august/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so, 0x0006): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib
  Referenced from: /Users/sp/opt/anaconda3/envs/august/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)```

【问题讨论】:

    标签: python macos apple-m1 oserror


    【解决方案1】:

    sjp00,

    你的帖子几乎可以一字不差地来自我。我经历了一个非常相似的过程。拔掉我的头发后,这就是有效的方法。TL;DR 是为了让 Darts 在苹果 M1 计算机上与 LightGBM 一起工作,需要使用 conda-forge.默认 conda 将不起作用(但可能会在未来某个日期)。

    阅读这个问题有助于澄清情况,https://github.com/microsoft/LightGBM/issues/4843

    具体来说,StrikerRUS 的评论:

    “如果我理解正确,默认的 conda 频道不支持 macOS-arm64 包。”(https://github.com/microsoft/LightGBM/issues/4843#issuecomment-1012313487)

    一个区别可能是我使用的是 Conda 而不是 miniconda?

    是的!这是我的主要假设!我相信 LightGBM 正在 为 arm64 架构编译,但 conda(和 Python)是基于 x64 的 并通过 Rosetta 2 翻译运行。所以架构不匹配 发生。

    (https://github.com/microsoft/LightGBM/issues/4843#issuecomment-1061332231)

    在我的笔记本电脑上,它是 MacBook Pro(16 英寸,2021 年),配备 Apple M1 Pro 芯片,安装了 macOS Monterey 版本 12.5.1 和以下 conda 设置:

    康达信息

     active environment : lightgbm_test_env
    active env location : /Users/bhudson/opt/anaconda3/envs/lightgbm_test_env
            shell level : 2
       user config file : /Users/bhudson/.condarc  populated config files : /Users/bhudson/.condarc
          conda version : 4.14.0
    conda-build version : 3.21.9
         python version : 3.9.7.final.0
       virtual packages : __osx=10.16=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /Users/bhudson/opt/anaconda3  (writable)
      conda av data dir : /Users/bhudson/opt/anaconda3/etc/conda   conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/osx-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/osx-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/osx-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /Users/bhudson/opt/anaconda3/pkgs
                          /Users/bhudson/.conda/pkgs
       envs directories : /Users/bhudson/opt/anaconda3/envs
                          /Users/bhudson/.conda/envs
               platform : osx-64
             user-agent : conda/4.14.0 requests/2.26.0 CPython/3.9.7 Darwin/21.6.0 OSX/10.16
                UID:GID : 501:20
             netrc file : None
           offline mode : False
    

    这最终对我有用。首先制作并激活一个干净的python 3.9环境

    conda create -n lightgbm_test_env python=3.9
    conda activate lightgbm_test_env
    

    确保将 conda forge 添加为通道(并且优先)

    conda config --add channels conda-forge
    conda config --set channel_priority strict
    

    然后同时安装所有带有 LightGBM 的 U8Darts。

    conda install -c conda-forge -c pytorch u8darts-all lightgbm
    

    “-c conda-forge”标志可能不是绝对必要的,但我把它留在里面是为了额外的冗余。

    【讨论】:

    • 如果我的项目安装是基于诗歌的?我担心使用 conda-forge 会造成不幸的混合
    【解决方案2】:
    conda install -c conda-forge lightgbm
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-12
      • 2018-04-28
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多