lazypredict导入后无可用方法,导入Supervised模块触发依赖报错
问题:lazypredict库无可用方法,导入LazyClassifier触发依赖错误
我安装了lazypredict,但调用时发现主库似乎没有可用方法。执行以下代码:
import lazypredict #from lazypredict.Supervised import LazyClassifier print(lazypredict.__version__) dir(lazypredict)
输出结果:
0.2.7 ['__author__', '__builtins__', '__cached__', '__doc__', '__email__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__']
我尝试过不同版本的lazypredict(0.2.7、0.2.8、0.2.11),搭配不同版本的sklearn(0.23.1、0.24、1.2.1),运行环境为Python3.8和3.9,但结果始终一致。
如果取消注释from lazypredict.Supervised import LazyClassifier这一行,会触发如下错误:
(补充完整错误追踪信息)
OSError Traceback (most recent call last) /var/folders/v8/gy4lk66j5jv7krxs16hk5wzh0000gn/T/ipykernel_42613/1479214520.py in <module> 1 import lazypredict ----> 2 from lazypredict.Supervised import LazyClassifier 3 4 print(lazypredict.__version__) ~/opt/anaconda3/lib/python3.9/site-packages/lazypredict/Supervised.py in <module> 28 29 # import catboost ---> 30 import lightgbm 31 32 warnings.filterwarnings("ignore") ~/opt/anaconda3/lib/python3.9/site-packages/lightgbm/__init__.py in <module> 6 from pathlib import Path 7 ----> 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 ~/opt/anaconda3/lib/python3.9/site-packages/lightgbm/basic.py in <module> 108 109 ---> 110 _LIB = _load_lib() 111 112 ~/opt/anaconda3/lib/python3.9/site-packages/lightgbm/basic.py 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) ~/opt/anaconda3/lib/python3.9/ctypes/__init__.py in LoadLibrary(self, name) 458 459 def LoadLibrary(self, name): ---> 460 return self._dlltype(name) 461 462 __class_getitem__ = classmethod(_types.GenericAlias) ~/opt/anaconda3/lib/python3.9/ctypes/__init__.py in __init__(self, name, mode, handle, use_errno, use_last_error, winmode) 380 381 if handle is None: ---> 382 self._handle = _dlopen(self._name, mode) 383 else: 384 self._handle = handle OSError: dlopen(/Users/nz/opt/anaconda3/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so, 0x0006): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib Referenced from: <D21A7969-4567-3BC7-94ED-6A9E83AE9D78> /Users/nz/opt/anaconda3/lib/python3.9/site-packages/lightgbm/lib_lightgbm.so Reason: tried: '/usr/local/opt/libomp/lib/libomp.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/libomp/lib/libomp.dylib' (no such file), '/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, not in dyld cache)
解决方案
1. 问题根源
错误本质是lightgbm依赖的libomp.dylib运行库缺失(macOS环境下的OpenMP组件),而lazypredict的Supervised模块依赖lightgbm,因此导入时触发依赖错误。另外,lazypredict的核心功能都封装在子模块中,直接导入主模块看不到可用方法是正常设计。
2. 修复步骤
- 安装libomp库:通过Homebrew安装(若未安装Homebrew,先自行安装):
brew install libomp - 重装lightgbm:确保lightgbm能正确链接到新安装的库:
pip uninstall -y lightgbm pip install lightgbm --no-cache-dir - 验证功能:重新运行导入代码,此时应该可以正常加载
LazyClassifier:from lazypredict.Supervised import LazyClassifier import lazypredict print(lazypredict.__version__)
内容的提问来源于stack exchange,提问作者CSe
相关产品推荐
相关产品推荐

