Недавно я наткнулся на некоторую проблему с измерениями охвата покрытия в виртуальной среде. Я не помню подобных проблем в прошлом, и я не смог найти решение в Интернете.Запуск покрытия внутри virtualenv
В принципе, когда я пытаюсь запустить набор тестов в virtualenv, он отлично работает. Но как только я попытаюсь это сделать, используя coverage
, он не работает из-за отсутствия необходимых ему модулей. Основываясь на некотором ответе на StackOverflow, я проверил свой скрипт и выяснил, что coverage
использует другой интерпретатор, даже если он работает изнутри того же virtualenv
.
Вот как воспроизвести его:
$ virtualenv --no-site-packages venv
New python executable in venv/bin/python
Installing Setuptools................................................done.
Installing Pip.......................................................done.
$ source venv/bin/activate
(venv)$ echo 'import sys; print(sys.executable)' > test.py
(venv)$ python test.py
/home/tadeck/testground/venv/bin/python
(venv)$ coverage run test.py
/usr/bin/python
Возникает вопрос: как сделать coverage
работу с виртуальной средой бесшовно? Я мог бы изменить sys.path
или установить необходимые модули по всей системе, но должен быть более чистый способ.
Я не могу воспроизвести это на окнах, боюсь. Покрытие отлично работает. + 1, чтобы помочь нуждающемуся pythonista :) –
Пробовал ли вы установить пакет '' coverage'' в виртуальный файл, который вы создаете? – fjarri
@Bogdan: Он уже был там, поэтому я не пытался его установить. Но когда я делаю 'pip install -U coverage', я получаю« Требование уже актуальное: покрытие в./Venv/lib/python2.7/site-packages' ». – Tadeck