在虚拟环境中使用鼻子的问题

我无法在virtualenv项目中使用鼻子(nosetests) – 似乎无法find安装在virtualenv环境中的软件包。

奇怪的是我可以设置

test_suite = 'nose.collector' 

在setup.py中运行testing就好了

 python setup.py test 

但是当直接testing鼻子时,会有各种各样的input错误。

我已经用全系统安装的鼻子和一个virtualenv鼻子套件来尝试它,没有运气。

有什么想法吗?

谢谢!!

你能够运行myenv/bin/python /usr/bin/nosetests吗? 这应该使用虚拟环境的库集运行鼻子。

您需要在虚拟环境中安装鼻子的副本。 为了强制安装鼻子到virtualenv,即使它已经安装在全球站点包中,使用-I标志运行pip install

 (env1)$ pip install nose -I 

从那时起,你可以照常运行nosetests

以下是对我有用的东西:

 $ virtualenv --no-site-packages env1 $ cd env1 $ source bin/activate # makes "env1" environment active, # you will notice that the command prompt # now has the environment name in it. (env1)$ easy_install nose # install nose package into "env1" 

我创build了一个非常基本的包,其setup.py中的setup.py与上面提到的test_suite属性相同。 然后我把包源码放在env1/src

如果你看看env1/src ,你会看到:

 slither/setup.py slither/slither/__init__.py slither/slither/impl.py # has some very silly code to be tested slither/slither/tests.py # has test-cases 

我可以使用test子命令来运行testing:

 (env1)$ pushd src/slither (env1)$ python setup.py test # ... output elided ... test_ctor (slither.tests.SnakeTests) ... ok test_division_by_zero (slither.tests.SnakeTests) ... ok Ran 2 tests in 0.009s OK (env1)$ popd 

或者,我可以用noseteststesting来运行相同的testing:

 (env1)$ pushd src (env1)$ nosetests slither/ .. Ran 2 tests in 0.007s OK (env1)$ popd 

另外请注意, nosetests可以挑剔的可执行文件。 你可以传递--exe如果你想它发现python模块是可执行的testing。

我有类似的问题。 以下解决方法帮助:

 python `which nosetests` 

(而不仅仅是nosestests

在相同的情况下,我需要重新加载virtualenvpath才能正确更新:

 deactivate env/bin/activate 

如果一切都失败了,请尝试在你的venv上安装鼻子,和/或运行nosetests-2.7 。 我相信@ andrea-zonca的答案具有相同的效果,如果你的venv python是2.7

也许这是最近的一个变化,但是对于我来说,当我通过pip安装.virtualenvs/<env>/bin.virtualenvs/<env>/bin安装了一个nosetests可执行文件,这与virtualenv正确运行。

您可能需要在您的PATH其他地方安装一个nosetests ,其优先级高于您在virtualenv中安装的鼻子testing。 安装在当前virtualenv最重要的nose模块和相关nosetests脚本的一个快速方法是编辑你的PATH

 export PATH=/path/to/current/virtualenv/bin:$PATH