我尝试使用 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,并使用 Spyder 和 Anaconda。有人能回答这个问题吗?
我的代码,直接取自darts包站点,其输出如下:
import pandas as pd
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)
最佳答案
sjp00,
你的帖子可能几乎是我逐字逐句写的。我经历了一个非常相似的过程。把我的头发拔出来后,这就是有效的。 TL;DR 是为了让 Darts 在苹果 M1 计算机上与 LightGBM 配合使用,需要使用 conda-forge。默认 conda 将不起作用(但可能在将来)。
阅读本期有助于澄清情况,https://github.com/microsoft/LightGBM/issues/4843
具体来说,StrikerRUS 的评论:
"If I understood correctly, default conda channels lack support of macOS-arm64 packages."(https://github.com/microsoft/LightGBM/issues/4843#issuecomment-1012313487)
和
One difference could be that I'm using Conda instead of miniconda?
Yeah! That is my main assumption! I believe that LightGBM is being compiled for arm64 architecture but conda (and Python) is x64-based and is run via Rosetta 2 translation. So architecture mismatch happens.
( https://github.com/microsoft/LightGBM/issues/4843#issuecomment-1061332231 )
在我的笔记本电脑上,即 MacBook Pro(16 英寸,2021 年),配备 Apple M1 Pro 芯片,安装了 macOS Monterey 版本 12.5.1 并进行了以下 conda 设置:
conda info
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 添加为 channel (并且优先)
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”标志可能不是严格必要的,但我将其保留以提供额外的冗余。
关于python - M1 Mac 返回 OSError : Library not loaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73370909/