指定在distribute/setuptools包中安装'tests_require'依赖项的位置
当我运行 python setup.py test
时,setup.py 文件中列出的 tests_require
依赖会被下载到当前目录。而当我运行 python setup.py install
时,setup.py 文件中列出的 requires
依赖则会被安装到 site-packages
目录里。
我该如何把那些 tests_require
的依赖也安装到 site-packages
里呢?
3 个回答
18
我正在使用 pip 来实现类似的功能。与其在我的 setup.py 文件中添加 tests_requires 或 extras,我创建了一个 pip 需求文件。
下面是我的 dev_requirements.txt 文件的示例:
pytest
webtest
然后要安装它,可以运行:
$ pip install -r dev_requirements.txt
29
你可以使用虚拟环境(virtualenv)来避免这个问题,并将额外的包安装到默认的位置,也就是lib/pythonX/site-packages文件夹里。首先,你需要在setup.py文件中定义你的测试需求,作为额外的内容:
setup(
# ...
install_requires=[
# ... (your usual install requirements)
],
extras_require={
'testing': [
# ... (your test requirements)
]
},
)
然后,你可以像这样安装你的包和测试需求:
pip install -e ".[testing]"
54
你不能指定测试所需的库安装在哪里。tests_require这个参数的主要作用就是列出那些在安装包时不需要,但在运行测试时需要的依赖库(因为你可以想象,很多用户可能只想安装这个包,而不想运行测试)。如果你希望在安装时也包含测试所需的库,建议把它们放在install_requires参数里。例如:
test_requirements = ['pytest>=2.1', 'dingus']
setup(
# ...
tests_require = test_requirements,
install_requires = [
# ... (your usual install requirements)
] + test_requirements,
)
据我所知,没有任何参数可以强制实现这个功能,除非你修改安装脚本。