48

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

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

4

3 回答 3

53

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

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

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

于 2011-10-12T22:01:01.113 回答
28

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

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

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

pip install -e ".[testing]"
于 2014-12-03T12:07:01.850 回答
17

我正在使用pip来实现类似的目标。我没有向我的 setup.py添加tests_requires额外内容,而是创建了一个pip 需求文件

例如我的dev_requirements.txt文件:

pytest
webtest

然后安装它运行:

$ pip install -r dev_requirements.txt
于 2012-01-17T18:22:15.183 回答