Проблемы с использованием носа в virtualenv

Я не могу использовать нос (nosetests) в проекте virtualenv – он не может найти пакеты, установленные в среде virtualenv.

Странно, что я могу установить

test_suite = 'nose.collector' 

в setup.py и запустите тесты просто отлично, как

 python setup.py test 

но при запуске nosetests прямо, есть всевозможные импортные ошибки.

Я пробовал это как с общесистемной установкой носа, так и с виртуальным пакетом носа и без везения.

Есть предположения?

Благодаря!!

8 Solutions collect form web for “Проблемы с использованием носа в virtualenv”

myenv/bin/python /usr/bin/nosetests ли вы запустить myenv/bin/python /usr/bin/nosetests ? Это должно запустить Nose, используя набор библиотек виртуальной среды.

Вам нужно иметь копию носа, установленную в виртуальной среде. Чтобы принудительно установить нос в virtualenv, даже если он уже установлен в глобальных пакетах сайтов, запустите pip install с -I флагом:

 (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" 

Я создал действительно базовый пакет, который имел в своем 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 может быть придирчивым к исполняемым nosetests . Вы можете передать --exe если вы хотите, чтобы он обнаруживал тесты в исполняемых модулях python.

У меня такая же проблема. Обходное решение помогло:

 python `which nosetests` 

(а не только nosestests )

В той же ситуации мне нужно было перезагрузить virtualenv для правильного обновления пути:

 deactivate env/bin/activate 

Если все остальное терпит неудачу, попробуйте установить нос в вашем вену и / или запустить nosetests-2.7 . Я считаю, что ответ @ andrea-zonca имеет тот же эффект, если ваш пингтон venv равен 2,7

Возможно, это недавнее изменение, но для меня, когда я установил nosetests через pip, был установлен исполняемый файл .virtualenvs/<env>/bin в .virtualenvs/<env>/bin , который (неудивительно) работает корректно с virtualenv.

Возможно, у вас есть nosetests которые установлены где-то еще в вашем PATH с более высоким приоритетом, чем тот, который установлен в вашем виртуальном сервере. Быстрый способ предоставить модуль nose и связанный с nosetests сценарий nosetests установленный в вашем текущем приоритете virtualenv, – это изменить свой PATH :

 export PATH=/path/to/current/virtualenv/bin:$PATH 
Python - лучший язык программирования в мире.