我正在编写一个Python包,通过PyPi.org进行分发和安装。有很多例子,但我无法在调用setup()
时正确使用install_requires
、setup_requires
和tests_require
参数。
我知道install_requires
是库本身的最小依赖项集。这个很简单。
setup_requires
和tests_require
之间有什么区别(如果需要的话(- 如果我想在CI环境中运行单元测试,那么每一个测试都需要做些什么?单元测试应该在安装库时运行吗
- 当我设置本地虚拟机来开发和测试库时,我希望安装哪一组要求
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
因此,要直接解决以下三点:
这两个都是cruft,省略它们。
在其他地方指定您的测试需求(在setuptools"extras_request"或普通的旧
requirements_test.txt
文件中(。是的,测试应该针对安装的代码运行。当您设置本地虚拟机来开发和测试库时,应该同时安装本地包和测试需求,例如
pip install -e ".[test]"