python M1 Mac返回OSError:库未加载

a11xaf1n  于 2023-08-02  发布在  Python
关注(0)|答案(2)|浏览(160)

我尝试使用from darts. models import ExponentialSmoothing从darts包导入预测模型,并返回以下错误:
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,正在使用带有Anaconda的Spyder。有人有答案吗?
我的代码,直接取自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)```

字符串

s1ag04yj

s1ag04yj1#

SJP00,
你的帖子几乎可以一字不差地出自我之手。我也经历了一个非常相似的过程。把我的头发拔出来后,这就是起作用的。TL;DR是指Dart在Apple M1计算机上与LightGBM配合使用时,需要使用conda-forge。默认conda将不起作用(但可能在未来的日期)。
阅读这一期有助于澄清情况,https://github.com/microsoft/LightGBM/issues/4843
特别是,StrikerRUS评论说:
“如果我没理解错的话,默认的conda频道不支持macOS-arm 64软件包。"
和/或
一个不同之处可能是我用的是康达而不是迷你康达?
耶!这是我的主要假设!我相信LightGBM是为arm 64架构编译的,但conda(和Python)是基于x64的,通过Rosetta 2翻译运行。因此会发生架构不匹配。
(网址:http://github.com/microsoft/lightGBM/issues/4843#issuecomment-1061332231)
在我的笔记本电脑这是一个MacBook Pro(16英寸,2021年),与苹果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添加为一个频道(并且该频 prop 有优先级)

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


然后,同时安装所有U8 Dart和LightGBM。

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


“-c conda-forge”标志可能不是绝对必要的,但我保留了它以获得额外的冗余。

pxiryf3j

pxiryf3j2#

您应该根据documentation安装OpenMP。
可以通过以下命令完成:

brew install libomp

字符串
这解决了我的问题,我希望它会帮助别人

相关问题