指定在哪里安装distribute / setuptools包的'tests_require'依赖项

时间:2011-01-19 10:43:14

标签: python testing setuptools distribute

当我运行python setup.py test时,setup.py中tests_require中列出的依赖项将下载到当前目录。我希望在site-packages中安装这些依赖项,就像我运行requirespython setup.py install中列出的依赖项一样。

3 个答案:

答案 0 :(得分:42)

你没有问过一个问题,但是你已经暗中提出了一个问题,“在运行install时,如何强制setuptools将测试依赖项(由tests_require参数指定)安装到Python环境?”我会回答这个问题。

您无法指定安装测试要求的位置。 tests_require参数的重点是指定安装包不需要的依赖关系,但仅用于运行测试(因为您可以想象许多消费者可能希望安装包但不运行测试)。如果您希望在安装期间包含测试要求,我会将它们包含在install_requires参数中。例如:

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

据我所知,在没有更改设置脚本的情况下,没有参数可以强制执行此行为。

答案 1 :(得分:17)

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

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

然后安装包含以下测试要求的包:

pip install -e ".[testing]"

答案 2 :(得分:15)

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

我的 dev_requirements.txt 文件示例:

pytest
webtest

然后安装它运行:

$ pip install -r dev_requirements.txt