Как запустить носовые тесты Python с другой версией Python

У нас CentOS с древним интерпретатором Python 2.4.

Но мы хотели бы написать тесты с более новым синтаксисом 2.5/2.6.

Предполагая, что у нас установлен второй интерпретатор Python (например, python2.6), есть ли способ запустить команду оболочки nosetests и указать ей использовать определенный интерпретатор Python вместо стандартного?


person Jacek Furmankiewicz    schedule 16.12.2010    source источник


Ответы (2)


Файл Nosetests находится на Python, поэтому вам нужно просто запустить его в вашей новой версии. Найдите, где находится файл:

which nosetests

Затем:

python2.6 /usr/bin/nosetests

Настройка имени и пути в соответствии с вашей системой. Я не проверял, но это должно сработать.

person Thomas K    schedule 16.12.2010
comment
Это терпит неудачу с ImportError, для меня… - person Eric O Lebigot; 16.01.2016
comment
@EOL - ImportError для носа или чего-то еще. Вам нужно будет установить нос внутри Python, с которым вы пытаетесь его запустить (и внутри virtualenv, если вы пытаетесь его запустить). - person Thomas K; 18.01.2016
comment
Да, в самом деле. Я надеялся, что Nousetests скорректирует путь поиска модуля (если это имеет смысл). Я не понимаю, как приведенный выше ответ решает проблему, поскольку кажется, что тесты носа из вопроса установлены внутри интерпретатора Python 2.4, а не 2.6, поэтому вызов его с помощью Python 2.6 должен потерпеть неудачу аналогичным образом… (?) На практике иногда может быть немного сложно установить нос: например, я использую MacPorts, а пакеты pip-2.4 и py24-nose устарели, поэтому мне пришлось бы устанавливать нос вручную. Почему нет. :) - person Eric O Lebigot; 18.01.2016
comment
Да, вам нужен пакет Nose, установленный для этой версии Python, или, по крайней мере, доступный для него (подойдет его размещение в cwd). Если вам нужна совершенно новая среда Python, я рекомендую загрузить Miniconda и начать с нее. - person Thomas K; 19.01.2016

Что ж, я бы установил другую версию Python (скажем, 2.6), а затем создал виртуальную среду и установил нос внутри нее. Затем он будет использовать эту версию носа и будет держать ваши вещи изолированными.

Вы также можете использовать tox, чтобы попытаться объединить интерпретаторов.

Наконец, вы можете просто запустить нос python2.6 $(which nose) [other options] args, чтобы запустить нос с более новым Python.

person Noufal Ibrahim    schedule 16.12.2010
comment
Этот ответ на связанный вопрос быстро показывает, как использовать virtualenvs. - person Elaine Hale; 28.05.2014
comment
Кроме того, меня интересует ваш комментарий «Наконец», но я не могу понять, что вы имеете в виду. - person Elaine Hale; 28.05.2014
comment
Фактическая команда nose представляет собой скрипт Python. $(which nose) будет расширяться до полного пути к скрипту (это известно о virtualenv, поэтому вы получите именно тот, который вы используете). Явная передача этого в качестве аргумента предпочтительному интерпретатору Python запустит скрипт с этим интерпретатором. Итак, если у вас где-то установлен nose со старой версией python в строке #!, вы можете использовать это для смены интерпретатора и запуска скрипта. - person Noufal Ibrahim; 28.05.2014