我无法在 virtualenv 项目中使用鼻子(nosetests) - 它似乎无法找到安装在 virtualenv 环境中的包。
奇怪的是我可以设置
test_suite = 'nose.collector'
在 setup.py 并运行测试就好了
python setup.py test
但是当直接运行nosetests时,会出现各种导入错误。
我已经尝试过在系统范围内安装鼻子和 virtualenv 鼻子包,但没有运气。
有什么想法吗?
谢谢!!
我无法在 virtualenv 项目中使用鼻子(nosetests) - 它似乎无法找到安装在 virtualenv 环境中的包。
奇怪的是我可以设置
test_suite = 'nose.collector'
在 setup.py 并运行测试就好了
python setup.py test
但是当直接运行nosetests时,会出现各种导入错误。
我已经尝试过在系统范围内安装鼻子和 virtualenv 鼻子包,但没有运气。
有什么想法吗?
谢谢!!
您需要在虚拟环境中安装鼻子的副本。为了强制将nose安装到virtualenv中,即使它已经安装在全局站点包中,也可以pip install
使用以下-I
标志运行:
(env1)$ pip install nose -I
从那时起,您可以nosetests
像往常一样运行。
你能跑myenv/bin/python /usr/bin/nosetests
吗?那应该使用虚拟环境的库集运行 Nose。
在同样的情况下,我需要重新加载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
对可执行文件可能很挑剔。--exe
如果您希望它发现可执行的 python 模块中的测试,您可以通过。
如果一切都失败了,请尝试在您的 venv 中安装鼻子,和/或运行nosetests-2.7
. 如果您的 venv python 为 2.7,我相信@andrea-zonca 的答案具有相同的效果
也许这是最近的变化,但对我来说,当我通过 pip 安装 nosetests 时,安装了一个 nosetests 可执行文件.virtualenvs/<env>/bin
,它(不出所料)与 virtualenv 一起正常运行。
你可能有一个nosetests
安装在你的其他地方,PATH
其优先级高于安装在你的 virtualenv 中的那个。将安装在当前 virtualenv 中的nose
模块和相关脚本置于最高优先级的一种快速方法是编辑您的:nosetests
PATH
export PATH=/path/to/current/virtualenv/bin:$PATH
晚会迟到了。
无论如何,如果您在 2021 年看到这一点…… 对我来说,这些问题是通过将我的 Virtual Envs 更新到至少 Python 3.8.2 来解决的。