Python 打包:pyproject.toml 中的构建需求 VS setup_requires

iba*_*ond 4 python setuptools pypi python-3.x pyproject.toml

在有些复杂的 Pythonsetup.py配置中,通常需要已经存在的其他库才能执行setuptools.setup. 就我而言,这将是setuptools>=45.0cython>=0.29。现在,我有两个选项来声明这些构建时要求(不要与通常在文件中找到的标准包安装要求混淆requirements.txt),以便将此项目发送到 PyPI:

  1. 手动将要求写入参数setup.pysetup_requires
#setup.py
from setuptools import setup
#...
setup(
    name='bla',
    #...
    setup_requires = ['setuptools>=45.0', 'cython>=0.29'],
)
Run Code Online (Sandbox Code Playgroud)
  1. 将这些要求写入PEP518pyproject.toml之后的单独文件中:
#pyproject.toml
[build-system]
# Minimum requirements for the build system to execute.
requires = ["setuptools>=45.0", "cython>=0.29"]
Run Code Online (Sandbox Code Playgroud)

它们可以互换吗?应该使用哪一个,为什么?

hon*_*ger 5

创建上述 PEP 是为了解决“基本原理”部分中列出的第一种方法的局限性。打包Python推荐使用第二种方法。