设置、测试和安装 Python 库的依赖项(要求)

Dependencies (requirements) for setting up, testing, and installing a Python library

我正在编写一个 Python 包,通过 PyPi.org 分发和安装。那里有很多例子,但我无法理解 install_requiressetup_requirestests_require 参数在 [=14= 的调用中的正确用法].

我知道 install_requires 是库本身的最小依赖集。这个很简单。

  1. setup_requirestests_require 之间有什么区别(如果需要的话)?
  2. 如果我想在 CI 环境中对 运行 进行单元测试,每个测试需要包含哪些内容?是否应该在安装库时进行单元测试 运行?
  3. 当我设置本地 virtualenv 用于开发和测试库时,我想安装哪一组要求?

setup_requires: 不要使用它。 这是一个失败的 setuptools 实验。它已被 PEP517 now (see deprecation note here) 废弃,其中构建系统在该配置部分中以声明方式指定构建要求,例如:

[build-system]  # in pyproject.toml
requires = ["setuptools >= 40.6.0", "wheel"]
build-backend = "setuptools.build_meta"

tests_require: 不要使用它。 这是一个失败的distutils实验。它已被 pytesttox 等项目废弃(请参阅弃用说明 here)。没有人再 运行 通过调用 python setup.py test 来测试他们的测试,也没有人希望将他们的测试依赖项下载到项目目录中——他们希望将它们安装到 virtualenv 中:

[options.extras_require]  # in setup.cfg
test =
    pytest
    pytest-cov

所以,直接解决三点:

  1. 这两个都是废话,省略它们。

  2. 在别处指定您的测试要求(在设置工具“extras_require”或在普通的旧 requirements_test.txt 文件中)。是的,测试应该 运行 针对已安装的代码

  3. 当你设置本地 virtualenv 用于开发和测试库时,应该安装本地包和测试要求,例如pip install -e ".[test]"