[英]How do I force `setup.py test` to install dependencies into my `virtualenv`?
在我的应用程序pip
-installable的十字军东征,我正在与setuptools
和distribute
斗争。 我假设我的依赖项是正确的,即使用pip install myapp
进行pip install myapp
应该可能正确填充虚拟环境。 但是,我想简化开发,所以我的目标是从一个空的virtualenv
开始并进行setup.py test
(以及后来的setup.py develop
,但这是一个完全不同的斗争)填充它所有已定义的依赖项。
而现在我的问题是:无论我怎么努力,我得到的都是在我的项目目录中安装为.egg
的依赖.egg
,这至少是次优的。 我尝试创建一个新的setuptools
命令,该命令将使用pip
(这似乎有用,即使是笨拙),但这不是严重的解决方案(子类化和重写)。
那么如何让setup.py test
填充virtualevn
而不是我的工作目录?
按照设计,您无法使tests_requires
或setup_requires
条目进入虚拟环境。 我们的想法是分离执行测试/设置所需的内容以及实际使用正在安装的软件包所需的内容。 例如,我可能要求在我的包上运行测试需要“覆盖”模块,但我的任何代码都不会使用它。 因此,如果我在运行测试时在我的环境中没有“覆盖”,如果我的软件包不需要,我不希望将“覆盖”安装到环境中。
如果使用setuptools
,则可以使用tests_require
关键字参数为setup
方法指定测试依赖项。
from setuptools import setup
setup(
name='your-package-name',
version='1.0.0',
author='me',
author_email='me@mybasement.com',
install_requires=['Pygments>=1.4'],
tests_require=['nose'],
packages=[
'your_package_name',
],
)
当你运行python setup.py test
,这将检查nose
并使用pip
将其安装到当前活动的virtualenv
如果尚未提供)。
请注意,如果使用distribute.core.setup
则将忽略此参数( test
命令也不可用)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.