当我运行python setup.py test
时,setup.py中tests_require
中列出的依赖项将下载到当前目录。我希望在site-packages中安装这些依赖项,就像我运行requires
时python setup.py install
中列出的依赖项一样。
答案 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