【问题标题】:How to run Python nose tests with a different version of Python如何使用不同版本的 Python 运行 Python 鼻子测试
【发布时间】:2011-05-26 16:22:12
【问题描述】:

我们有带有古老 Python 2.4 解释器的 CentOS。

但我们想用更新的 2.5/2.6 语法编写测试。

假设我们安装了第二个 Python 解释器(例如 python2.6)有什么办法吗 运行 'nosetests' shell 命令并告诉它使用特定的 Python 解释器而不是默认的解释器?

【问题讨论】:

    标签: python unit-testing centos nose


    【解决方案1】:

    好吧,我要做的是安装不同版本的 Python(比如 2.6),然后创建一个 virtualenv 并在其中安装鼻子。然后它将使用该版本的鼻子并保持您的东西隔离。

    您也可以考虑使用tox 尝试桥接解释器。

    最后,您可以简单地运行nose python2.6 $(which nose) [other options] args 以使用较新的Python 运行nose。

    【讨论】:

    • This answer 到一个相关问题快速展示了如何使用 virtualenvs。
    • 另外,我对您的“终于”评论很感兴趣,但不能完全理解您的意思。
    • 实际的nose 命令是一个python 脚本。 $(which nose) 将扩展到脚本的完整路径(这是 virtualenv 感知的,因此您将获得正在运行的确切路径)。将此作为参数显式传递给首选 python 解释器将使用该解释器运行脚本。因此,如果您在 #! 行中安装了 nose 并使用旧版本的 python,您可以使用它来更改解释器并运行脚本。
    【解决方案2】:

    nosetests 文件是用 Python 编写的,因此只需在新版本中运行它即可。查找文件所在的位置:

    which nosetests
    

    然后:

    python2.6 /usr/bin/nosetests
    

    调整名称和路径以匹配您的系统。我还没有测试过,但这应该可以。

    【讨论】:

    • 这对我来说失败了ImportError...
    • @EOL - 鼻子或其他东西的 ImportError。您需要在尝试运行它的 Python 中安装鼻子(以及在 virtualenv 中,如果您尝试运行它的话)。
    • 是的,确实如此。我希望鼻子测试会调整模块搜索路径(如果这有意义的话)。我看不出上面的答案是如何解决问题的,因为问题中的鼻子测试似乎安装在 Python 2.4 解释器而不是 2.6 解释器中,所以用 Python 2.6 调用它应该同样失败......(?)在实践中,有时安装nose可能会有点困难:例如,我使用的是MacPorts,而pip-2.4和py24-nose都是过时的包,所以我必须手动安装nose。为什么不。 :)
    • 是的,你确实需要为那个版本的 Python 安装鼻子包,或者至少可以访问它(把它放在 cwd 中就可以了)。如果您需要一个全新的 Python 环境,我建议您下载 Miniconda 并从那里开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多