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

奇怪的是,我可以设置

test_suite = 'nose.collector'

在setup.py和

运行测试就好
python setup.py test

但在运行nosetests直时,有各种进口的错误。

我已经与两个鼻子的全系统的安装和的virtualenv鼻子包和没有运气尝试过。

任何想法?

谢谢!

有帮助吗?

解决方案

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

其他提示

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

(env1)$ pip install nose -I

从此可以只运行nosetests如常。

在相同的情况下,我需要重新加载virtualenv的路径时被正确地更新:

deactivate
env/bin/activate

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

python `which nosetests` 

(而不是仅仅nosestests

下面是什么对我的作品:

$ 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

如果这些方法都失败,请尝试在VENV安装的鼻子,和/或运行nosetests-2.7。我相信@安德烈 - 宗卡的回答有同样的效果,如果你的VENV蟒2.7

也许这是最近的改变,但我,当我通过PIP安装nosetests,有安装在.virtualenvs/<env>/bin,其中(勿庸置疑)与所述的virtualenv正确操作执行的nosetests。

您可能会被安装在其他地方你nosetests与一个比安装在您的virtualenv更高优先级的PATH。一个快速的方法来给安装在当前的virtualenv重中之重nose模块和相关nosetests脚本编辑您的PATH

export PATH=/path/to/current/virtualenv/bin:$PATH
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top