【问题标题】:Specify where to install 'tests_require' dependencies of a distribute/setuptools package指定分发/安装工具包的“tests_require”依赖项的安装位置
【发布时间】:2011-06-11 16:21:37
【问题描述】:

当我运行python setup.py test 时,setup.py 中tests_require 中列出的依赖项会下载到当前目录。当我运行python setup.py install 时,requires 中列出的依赖项将安装到site-packages

我怎样才能将那些 tests_require 依赖项安装在 site-packages 中?

【问题讨论】:

  • setuptools tests_requiredeprecated since 41.5.0(2019 年 10 月)。我们现在是 50.3.0。
  • 你好@MartinThoma 是否有替代方法来指定开发/测试所需的要求但不是普通用法?
  • 我认为这类似于 setup.py 中的extras_require={'test': ['pytest']}

标签: python testing setuptools distribute


【解决方案1】:

您无法指定测试要求的安装位置。 tests_require 参数的全部意义在于指定安装包不需要但仅用于运行测试的依赖项(正如您可以想象的那样,许多消费者可能想要安装包但不运行测试)。如果您希望在安装过程中包含测试要求,我会将它们包含在 install_requires 参数中。例如:

test_requirements = ['pytest>=2.1', 'dingus']
setup(
    # ...
    tests_require = test_requirements,
    install_requires = [
        # ... (your usual install requirements)
    ] + test_requirements,
)

据我所知,在不更改设置脚本的情况下,您无法传递任何参数来强制执行此行为。

【讨论】:

  • 我找到了this article,它描述了将“附加”用于类似目的。
  • 我不再推荐这种技术。如果安装需要测试(无论是否需要测试),只需将它们放在install_requires中即可,而无需将它们添加到tests_require
【解决方案2】:

您可以使用 virtualenv 来避免这种情况,并将额外的包安装到它们的默认位置,在 lib/pythonX/site-packages 内。首先,您应该在 setup.py 中将您的测试要求定义为额外的:

setup(
    # ...
    install_requires=[
        # ... (your usual install requirements)
    ],
    extras_require={
        'testing': [
            # ... (your test requirements)
        ]
    },
)

然后安装你的包,测试要求如下:

pip install -e ".[testing]"

【讨论】:

  • @Flimm 它没有。但是您可以将测试包拉到一个列表中,并像这个答案一样从extras_require['test']tests_require 引用相同的列表。 stackoverflow.com/a/41398850/149428
【解决方案3】:

我正在使用 pip 来实现类似的目标。我没有将 tests_requiresextras 添加到我的 setup.py 中,而是创建了一个 pip requirements file

以我的 dev_requirements.txt 文件为例:

pytest
webtest

然后安装它运行:

$ pip install -r dev_requirements.txt

【讨论】:

  • 我相信requirements-dev.txtrequirements-test.txt 是这些文件更常用的名称。
  • @phoenix 对于requirements/test.txtrequirements/prod.txt 也可以这样说
猜你喜欢
  • 2018-03-04
  • 2011-11-12
  • 2017-06-28
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 2019-01-24
  • 2016-03-14
相关资源
最近更新 更多