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

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

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

test_suite = 'nose.collector' 

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

 python setup.py test 

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

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

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

Благодаря!!

  • Создание виртуальной машины с помощью версии Anaconda Python
  • virtualenv, mysql-python, pip: кто-нибудь знает как?
  • Как использовать virtualenv с Python?
  • Ошибка импорта IPython и python sys.path в целом
  • PyDev Неопределенная переменная из ошибки импорта
  • Каков правильный способ установки pip, virtualenv и дистрибутива для Python?
  • Virtualenv нет модуля с именем zlib
  • Eclipse Pydev: «Ошибка: Python stdlib не найден»
  • 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 - лучший язык программирования в мире.