使用基于 distutils setup.py 的 C 扩展的推荐方法是什么?

What is the recommended way to work with a distutils-based setup.py of a C extension?

https://wiki.python.org/moin/WindowsCompilers 现在已经将基于 distutils 的软件包(从 from distutils.core import setup 开始)的说明完全替换为基于 setuptools 的软件包(从 from setuptools import setup).

但是,如果我有一个基于 distutilssetup.py,当我 运行 它时,setuptools 不会被使用 - 因此页面上的说明不会没用。

可以通过 setuptools 运行 基于 distutils 的脚本,就像 pip 那样,但是 it requires the following code:

python -u -c "import setuptools, tokenize;__file__=<setup.py full path>;
    exec(compile(getattr(tokenize, 'open', open)(__file__).read()
    .replace('\r\n', '\n'), __file__, 'exec'))" <setup.py arguments>

他们不可能指望我每次都在命令行上输入,现在可以吗?

自提问以来,https://wiki.python.org/moin/WindowsCompilers 已更新为包含 distutils 的说明。要点是:

  • distutils 仅检测基本的编译器设置(通常,Visual Studio 相应版本中包含的编译器)。与这些设置相对应的指南部分明确提到 distutils.

  • 对于其他设置,它可以是 "Windows SDK command prompt" 中的 运行,并通过设置 DISTUTILS_USE_SDK 环境来告知依赖它设置的环境变量变量。

    • 在后台,它还会检查由 MS 的 SDK 命令提示脚本设置的 MsSdk 环境变量。