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

如何完全替代Python 3.10中已弃用的distutils模块

distutils弃用后的完整迁移方案

一、distutils到setuptools的代码替换规则

你提到的导入替换逻辑完全成立,PEP 632里列出的distutils子模块统一替换为setuptools下的对应模块即可,具体替换规则如下:

  • import distutils.ccompiler → import setuptools.ccompiler
  • from distutils.cmd import Command → from setuptools.cmd import Command
  • import distutils.command → import setuptools.command
  • import distutils.config → import setuptools.config
  • from distutils.core import Distribution → from setuptools.core import Distribution
  • import distutils.errors → import setuptools.errors

对于PEP 632迁移建议里没有提到的distutils.core.setup和distutils.core.Extension,直接替换为setuptools下的同名对象即可:

  • from distutils.core import setup, Extension → from setuptools import setup, Extension
    两者的API接口完全兼容,不需要修改后续的调用逻辑。

另外对于建议用标准库替代的接口,比如distutils.util.get_platform,直接替换为platform模块的对应能力即可,你可以根据实际需求选择platform.system()、platform.machine()或者platform.platform()等接口实现相同功能。

二、setuptools的定位与使用规则

1. 是否属于Python标准发行版

setuptools不属于Python标准库,所以不会出现在官方标准库的模块索引中。但从Python 3.4开始,官方发布的Python安装包默认会预装setuptools和pip,大部分普通用户的环境中都默认存在这个包。不过部分精简版的Python发行版(比如部分Linux操作系统源里自带的裁剪版Python)可能会把setuptools拆成单独的软件包,需要手动安装。

2. 安装与使用要求

如果用户环境中没有预装setuptools,直接执行pip install setuptools即可完成安装。目前setuptools没有被纳入标准库的计划,它会继续作为PyPA维护的第三方打包工具存在。

3. setup.py的使用现状

当前主流的Python打包规范已经不再推荐直接运行python setup.py install、python setup.py develop这类命令,对应的替代方案是:

  • 安装本地开发版本:执行pip install -e .
  • 构建分发包:使用python -m build命令
    所有涉及setup.py的操作都会由pip、build等工具自动处理,工具会自动解决setuptools的依赖问题,不需要用户手动提前安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:54:04