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

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

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

  • Могу ли я ограничить вывод покрытия носа в каталог (а не пакет)?
  • Список всех тестов, найденных Nosetest
  • Изменение имен тестов, созданных генераторами носовых тестов
  • Обработка исключений в Python Behave Testing framework
  • test_suite = 'nose.collector' 

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

     python setup.py test 

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

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

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

    Благодаря!!

  • Список всех тестов, найденных Nosetest
  • Могу ли я ограничить вывод покрытия носа в каталог (а не пакет)?
  • Изменение имен тестов, созданных генераторами носовых тестов
  • Обработка исключений в Python Behave Testing framework
  • 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 - лучший язык программирования в мире.