在virtualenv中使用鼻子的问题

时间:2009-05-14 18:30:16

标签: python virtualenv nose nosetests

我无法在virtualenv项目中使用nose(nosetests) - 它似乎无法找到virtualenv环境中安装的软件包。

奇怪的是我可以设置

test_suite = 'nose.collector'
在setup.py中

并运行测试就好了

python setup.py test

但是当直接运行nosetests时,会出现各种导入错误。

我已尝试使用系统范围的鼻子安装和virtualenv鼻子包,但没有运气。

有什么想法吗?

谢谢!

9 个答案:

答案 0 :(得分:60)

您需要在虚拟环境中安装一个nose副本。为了强制将nose安装到virtualenv中,即使它已经安装在全局站点包中,也可以使用pip install标志运行-I

(env1)$ pip install nose -I

从那时起,您可以像往常一样运行nosetests

答案 1 :(得分:44)

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

答案 2 :(得分:10)

在同样的情况下,我需要重新加载virtualenv以便正确更新路径:

deactivate
env/bin/activate

答案 3 :(得分:9)

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

python `which nosetests` 

(而不只是nosestests

答案 4 :(得分:8)

这对我有用:

$ 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"

我创建了一个真正基本的包slither,它在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子命令运行测试:

(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

或者,我可以使用nosetests运行相同的测试:

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

另请注意,nosetests可以挑剔可执行文件。如果您希望它在可执行的python模块中发现测试,则可以传递--exe

答案 5 :(得分:1)

如果所有其他方法都失败了,请尝试在您的venv中安装鼻子,和/或运行nosetests-2.7。我相信如果你的venv python是2.7

,@ andrea-zonca的答案会有同样的效果

答案 6 :(得分:0)

也许这是最近的一次改变,但对我来说,当我通过pip安装nosetests时,.virtualenvs/<env>/bin中安装了一个nosetests可执行文件,其中(毫不奇怪)与virtualenv一起正常运行。

答案 7 :(得分:0)

nosetests中的某个地方可能安装了PATH,其优先级高于您在virtualenv中安装的优先级。在您当前的virtualenv中优先安装nose模块和关联的nosetests脚本的快速方法是修改PATH

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

答案 8 :(得分:0)

聚会迟到了。

无论如何,如果你在 2021 年看到这个...... 对我来说,这些围绕着鼻子、鼻子和皮诺曹的问题是通过将我的虚拟环境更新到至少 Python 3.8.2 来解决的。