You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.11无法从warnings模块导入deprecated类的原因咨询

问题原因解析
  • deprecated并非Python 3.11的公共导出API:你在warnings.py里看到的deprecated类是模块内部实现的组件,并没有被添加到warnings模块的__all__列表中,这意味着Python不鼓励直接从warnings导入它,强行导入就会触发cannot load deprecated from warnings错误。
  • 版本差异导致的误解:你查看的代码属于Python 3.12及更新版本的分支,在这些版本中deprecated才被正式纳入warnings模块的公共API,支持直接导入使用;而Python 3.11里该装饰器并未对外暴露,无法直接导入。

如果需要在Python 3.11中使用类似功能,有两种替代方案:

  1. 使用第三方库,比如deprecation或deprecated包,安装后直接调用对应装饰器
  2. 手动实现一个简单的装饰器,利用warnings.warn()函数触发 deprecation 警告:
import warnings
from functools import wraps

def deprecated(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        warnings.warn(f"{func.__name__} 已被弃用", DeprecationWarning, stacklevel=2)
        return func(*args, **kwargs)
    return wrapper

@deprecated
def test():
    print("test")

test()

内容的提问来源于stack exchange,提问作者Barry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:09:54