使用Kats模块遇AttributeError:packaging.version无LegacyVersion属性
问题描述
首次尝试使用Kats模块运行《How to Detect Seasonality, Outliers and Changepoints in Your Time Series》一文的代码,最初用Python 3.6时遇到了和Stack Overflow两个问题相同的future annotations相关错误,按方案升级到Python 3.9后出现新错误,具体报错如下:
from kats.detectors.outlier import OutlierDetector outlier_detector = OutlierDetector(ts_day, "additive") --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[19], line 1 ----> 1 from kats.detectors.outlier import OutlierDetector 3 outlier_detector = OutlierDetector(ts_day, "additive") File ~/miniconda3/envs/data_analysisPy39/lib/python3.9/site-packages/kats/__init__.py:6 1 # Copyright (c) Meta Platforms, Inc. and affiliates. 2 # 3 # This source code is licensed under the MIT license found in the 4 # LICENSE file in the root directory of this source tree. ----> 6 from . import compat # noqa # usort: skip 7 from . import consts # noqa # usort: skip 8 from . import data # noqa # usort: skip File ~/miniconda3/envs/data_analysisPy39/lib/python3.9/site-packages/kats/compat/__init__.py:6 1 # Copyright (c) Meta Platforms, Inc. and affiliates. 2 # 3 # This source code is licensed under the MIT license found in the 4 # LICENSE file in the root directory of this source tree. ----> 6 from . import compat # noqa # usort: skip 7 from . import pandas # noqa # usort: skip 8 from . import statsmodels # noqa # usort: skip File ~/miniconda3/envs/data_analysisPy39/lib/python3.9/site-packages/kats/compat/compat.py:19 14 from typing import Callable, Union 16 from packaging import version as pv ---> 19 V = Union[str, "Version", pv.Version, pv.LegacyVersion] 22 class Version: 23 """Extend packaging Version to allow comparing to version strings. 24 25 Wraps instead of extends, because pv.parse can return either a 26 pv.Version or a pv.LegacyVersion. 27 """ AttributeError: module 'packaging.version' has no attribute 'LegacyVersion'
修复方案
Kats是可以正常运行的,这个错误是由于packaging库的新版本移除了LegacyVersion类,但Kats的兼容代码仍在引用它导致的,按以下步骤修复:
- 卸载当前的高版本
packaging:pip uninstall -y packaging - 安装兼容的旧版本(比如21.3版本,亲测有效):
pip install packaging==21.3 - 重新运行你的Kats代码即可
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

