在虚拟环境中使用鼻子的问题
我无法在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
或者,我可以用nosetests
testing来运行相同的testing:
(env1)$ pushd src (env1)$ nosetests slither/ .. Ran 2 tests in 0.007s OK (env1)$ popd
另外请注意, nosetests
可以挑剔的可执行文件。 你可以传递--exe
如果你想它发现python模块是可执行的testing。
我有类似的问题。 以下解决方法帮助:
python `which nosetests`
(而不仅仅是nosestests
)
在相同的情况下,我需要重新加载virtualenv
path才能正确更新:
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