如何才能完全替代 3.10 中已弃用的 distutils?

Ala*_*lan 33 distutils python-3.x

根据PEP 632distutils将被正式标记为已弃用,并且在 Python 3.12 中,它将被删除。我的产品很快就会支持 Python 3.10,我不想忍受弃用警告,所以我想删除现在的引用distutils。问题是我找不到好的、全面的文档来系统地让我知道distutils模块 C、D 和 E 中的 A 可以替换为 B。 PEP 中的迁移建议出人意料地粗略,我还没有\没有找到 的标准文档,或者任何需要替换的distutils模块(例如?)的标准文档,这可以让我填补空白。我也不确定如何查看已安装的标准发行版的内容(即物理目录和文件)以便为自己回答这些问题。setuptoolsdistutils

\n

“迁移建议”部分说:

\n
\n

对于这些模块或类型,setuptools是最好的替代品:

\n
    \n
  • distutils.ccompiler
  • \n
  • distutils.cmd.Command
  • \n
  • distutils.command
  • \n
  • distutils.config
  • \n
  • distutils.core.Distribution
  • \n
  • distutils.errors
  • \n
\n

...

\n

对于这些模块或函数,请使用所示的标准库模块:

\n

...

\n
    \n
  • distutils.util.get_platform\xe2\x80\x94 使用platform模块
  • \n
\n
\n

据推测,这意味着setuptools这些模块或类型要么有直接替代品,要么有接近的替代品(尽管我不确定如何验证这一点)。例如,也许setuptools.command.build_py可以替换distutils.command.build_py. 那是对的吗?无论如何,这些又如何呢?

\n
    \n
  • distutils.core.setup
  • \n
  • distutils.core.Extension
  • \n
\n

此外,我应该如何看待它setuptools没有出现在标准文档的模块索引列表下的事实?标准发行版的一部分,对吗?我确实在下面看到了它Lib/site-packages

\n

更新 1:如果setuptools当前不是标准发行版的一部分,那么它是否有望成为 Python 3.11 或 3.12 中的一部分?客户是否希望先安装它(通过 pip?),然后才能运行导入的 setup.py 脚本setuptools?或者认为人们根本不应该再运行 setup.py

\n

知道如何替换distutils.core.setupanddistutils.core.Extension可能足以满足我当前的需求,但回答我提出的其他问题将非常有帮助。

\n

更新2:

\n

setuptools确实是 python.org 标准发行版的一部分,可以通过从 python.org 新安装的 Python 解释器导入它来确定。让我感到困惑的是,它是在 python.org 的一个单独的站点上以单独的样式记录的。然而,正如 SuperStormer 在评论中指出的那样,某些 Linux 发行版(例如 Debian)在安装 Python 时默认不安装它。

\n

更新3:

\n

这个命令:

\n
Python-3.9.1/python -m ensurepip --default-pip \n
Run Code Online (Sandbox Code Playgroud)\n

在 Debian 10 上,在从 python.org 新鲜下载并构建的 Python 安装上安装pip和。setuptools命令执行前,pip不存在,setuptools无法导入。

\n

WIP*_*WIP 4

  • 是的 setuptools 可以完全取代 distutils 的一切
  • distutils.core.setup 映射到 setuptools.setup
  • distutils.core.Extension 映射到 setuptools.Extension
  • setuptools 不是标准库的一部分(因此文档中没有它),但它是标准 python.org 发行版的一部分。
  • 一些发行版选择将 setuptools 和 pip 从默认的 python 包中分离出来,因为它们不假设您将使用 python 编写代码,但是一些系统工具需要 python(apt 等)。如果您计划使用发行版作为开发工具,则需要从发行版存储库安装 pip 和 setuptools。