首页 > 解决方案 > 设置、测试和安装 Python 库的依赖项(要求)

问题描述

我正在编写一个 Python 包以通过 PyPi.org 分发和安装。那里有很多例子,但我无法理解在调用中正确使用install_requires,setup_requires和参数。tests_requiresetup()

我知道install_requires是库本身的最小依赖集。这很容易。

  1. setup_requires和之间有什么区别(如果需要的话)tests_require
  2. 如果我希望单元测试在 CI 环境中运行,每一项都需要做些什么?安装库时是否应该运行单元测试?
  3. 当我设置一个本地 virtualenv 来开发和测试库时,我想要安装哪一组需求?

标签: pythonsetuptoolspypidistutils

解决方案


setup_requires: 不要用。 这是 setuptools 的失败实验。它现在已被PEP517淘汰,其中构建系统在其自己的配置部分中以声明方式指定构建要求,例如:

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

tests_require: 不要用。 这是 distutils 的一次失败的实验。它已被 和 等项目pytest淘汰tox。没有人通过调用来运行他们的测试python setup.py test,也没有人希望将他们的测试依赖项下载到项目目录中——他们希望将它们安装到 virtualenv 中:

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

所以,直接解决这三点:

  1. 这两个都是粗略的,省略它们。

  2. 在其他地方指定您的测试要求(在 setuptools “extras_require” 或普通的旧requirements_test.txt文件中)。是的,测试应该针对已安装的代码运行

  3. 当您为开发和测试库设置本地 virtualenv 时,应安装本地包和测试需求,例如pip install -e ".[test]"


推荐阅读