为了让我的应用程序pip
- 可安装,我正在与setuptools
和distribute
进行重大战斗。我假设我的依赖项是正确的,即使用pip install myapp
安装应该可能正确填充虚拟环境。但是,我想在简化开发的同时简化开发,因此我的目标是从空virtualenv
开始,然后制作setup.py test
(以及后来的setup.py develop
,但这是一个整体不同的战斗)用所有定义的依赖关系填充它。
现在我的问题是:无论我怎么努力,我得到的只是在我的项目目录中安装为.egg
的依赖项,这至少是次优的。我尝试创建一个新的setuptools
命令,该命令将使用pip
(这似乎有用,即使很笨拙),但这不是真正的解决方案(子类化和覆盖它)。
那么如何让setup.py test
填充virtualevn
而不是我的工作目录?
答案 0 :(得分:12)
按照设计,您无法使tests_requires
或setup_requires
条目进入虚拟环境。我们的想法是分离执行测试/设置所需的内容以及实际使用正在安装的软件包所需的内容。例如,我可能要求在我的包上运行测试需要“覆盖”模块,但我的任何代码都不会使用它。因此,如果我去运行测试时环境中没有“覆盖”,如果我的软件包不需要,我就不希望将“覆盖”安装到环境中。
答案 1 :(得分:-6)
如果您使用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
并使用virtualenv
将其安装到当前有效的pip
(如果尚未提供)。
请注意,如果您使用distribute.core.setup
(test
命令也不可用),则会忽略此参数。