python - 设置、测试和安装 Python 库的依赖项(要求)
问题描述
我正在编写一个 Python 包以通过 PyPi.org 分发和安装。那里有很多例子,但我无法理解在调用中正确使用install_requires
,setup_requires
和参数。tests_require
setup()
我知道install_requires
是库本身的最小依赖集。这很容易。
setup_requires
和之间有什么区别(如果需要的话)tests_require
?- 如果我希望单元测试在 CI 环境中运行,每一项都需要做些什么?安装库时是否应该运行单元测试?
- 当我设置一个本地 virtualenv 来开发和测试库时,我想要安装哪一组需求?
解决方案
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
所以,直接解决这三点:
这两个都是粗略的,省略它们。
在其他地方指定您的测试要求(在 setuptools “extras_require” 或普通的旧
requirements_test.txt
文件中)。是的,测试应该针对已安装的代码运行。当您为开发和测试库设置本地 virtualenv 时,应安装本地包和测试需求,例如
pip install -e ".[test]"
推荐阅读
- c++ - C ++如何更改Windows托盘通知气球图标?(信息图标)
- c# - C#添加到文本框,我选择的一行或多行中的列值
- java - 使用 Selenium Java 测试用例等待加载元素时获取“org.openqa.selenium.TimeoutException”
- antlr - 了解 ANTLR/EBNF 括号
- amazon-web-services - Mosquitto MQTT 代理中的额外侦听器可以帮助提高性能吗?
- tensorflow - Albert_base:使用 bert-for-tf2 调用时来自 ckpt 的权重未正确加载
- django - Django ORM查询manytomanytofiled以输出一个列表与字典键
- python - 如何将列表从最新的用户输入排序到最后
- blazor - Blazor - Razor 类库 - 重用完整的 Blazor 页面
- yii2 - 在 YII2 中的 gridview 列内添加多个 Select2 小部件(不作为过滤器列)