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

Python中distutils包弃用警告的修复方法

Python distutils弃用警告修复方案

这个警告是Python官方的预期提示:从Python 3.10版本开始标记标准库内置的distutils为弃用状态,3.12版本已正式将其从标准库中移除,官方默认替代方案为setuptools,具体修复方式分场景处理:

场景1:自身代码直接引用distutils

  • 直接替换导入路径,绝大多数distutils的API在setuptools中有兼容实现,常见导入替换示例:
    # 旧写法(会触发警告)
    from distutils.core import setup, Extension
    from distutils.version import LooseVersion, StrictVersion
    from distutils.util import strtobool
    
    # 新写法
    from setuptools import setup, Extension
    from packaging.version import Version  # 替代旧的版本判断类
    # strtobool这类工具函数可以从setuptools._distutils.util临时导入,也可以自行实现简单逻辑
    
    涉及版本判断的逻辑不要继续沿用旧的LooseVersion/StrictVersion,直接用packaging库的Version类即可,这个库是Python打包生态的基础依赖,几乎所有Python环境都默认预装。
  • 临时兼容方案(仅适合短期过渡,不推荐长期使用):如果暂时没有精力重构代码,可以在代码最开头加警告过滤规则,或者启动时加环境变量压制警告:
    # 代码内过滤,放在所有导入逻辑最前面
    import warnings
    warnings.filterwarnings("ignore", message=".*distutils package is deprecated.*")
    
    # 命令行启动时过滤
    PYTHONWARNINGS="ignore:.*distutils package is deprecated.*" python your_script.py
    

场景2:未直接调用distutils,运行第三方代码/安装依赖时触发警告

  • 第一步先升级环境内的setuptools到最新版本,旧版本setuptools自身会调用distutils触发警告:
    pip install --upgrade setuptools pip
    
  • 升级触发警告对应的第三方依赖包,绝大多数主流Python库都已经在2023年前后的版本中完成了distutils适配,升级到最新稳定版即可消除警告。
  • 如果是自己打包项目时执行python setup.py xxx类命令触发警告,直接弃用直接调用setup.py的旧构建方式,改用官方推荐的build模块:
    pip install --upgrade build
    python -m build
    

注意:Python 3.12+版本不要尝试安装非官方移植的distutils包来规避问题,这类第三方移植版兼容性差,很容易出现包安装路径错误、C扩展编译失败等隐性问题,按官方方案迁移到setuptools等替代库是唯一稳妥的长期方案。如果需要查询更细粒度的API迁移映射关系,可以查阅PEP 632的相关说明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:30:56