当我在虚拟环境中运行nosetests时,为什么会出现“Invalid command nosetests”错误?

5
我在将此项目加载到Jenkins时首次注意到了问题。更令人困惑的是,我已经能够按如下方式复现它:
在原始版本的项目中,以下命令按预期运行测试:
.venv/bin/python setup.py nosetests

我接下来会做以下步骤:
  1. 克隆项目:hg clone my-project my-project-clone
  2. 在克隆版本中创建虚拟环境 .venv
  3. 从克隆的 pip freeze 文件安装依赖项

如果我运行 .venv/bin/python setup.py nosetests 并获得以下结果:

setup.py: error: Invalid command nosetests

setup.py 包括以下设置:

setup_requires=[
    'nose>=1.0', 'nosexcover', 'coverage', 'selenium', 'fixture'
],
test_suite='nose.collector',

我很困惑,因为每个版本中的setup.pysetup.cfg文件都是相同的,而且就我所能了解的来看,环境也是相同的。

补充说明

我在侧边栏里看到了这个 Stack Overflow 问题,它看起来非常相关,但那里提供的解决方案在我的情况下都不起作用。


你的虚拟环境中是否安装了 nose?也就是说,你能否在虚拟环境内的 shell 中运行 nosetests 呢? - tom
@tom 在我的项目原始版本中没有安装 nose。我尝试在克隆版本中使用 pipeasy_install 安装它,以便我可以运行 .venv/bin/nosetests,但是两者都没有解决我的问题。 - klenwell
我尝试在项目的两个版本上运行.venv/bin/python setup.py nosetests -V。原始输出为setup.py版本1.1.2。克隆版本为:setup.py版本1.2.1 - klenwell
2个回答

2

1

我从未确切地找出根本问题。但是我想出了一个解决方法,使我能够开始构建。这是我在Jenkins上的Virtualenv Builder中使用的命令:

# require nosetests be installed
# (old method using setup.py nosetests command does not work)
$VIRTUAL_ENV/bin/pip install nose

# install remain pip requirements
$VIRTUAL_ENV/bin/pip install -r requirements.pip

# must run this prior to running tests to install other nosetest dependencies
$VIRTUAL_ENV/bin/python setup.py install

# now we can run nosetests
# this does not work: $VIRTUAL_ENV/bin/python setup.py nosetests
$VIRTUAL_ENV/bin/nosetests -c setup.cfg

我怀疑根本问题与虚拟环境的状态以及新虚拟环境中Distutils和Nose之间的某种版本不兼容有关。旧的虚拟环境似乎已经在一段时间内达到了某种危险的配置,克隆和pip无法重新创建。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接