Запуск покрытия внутри virtualenv

Недавно я наткнулся на некоторые проблемы с выполнением измерений охвата в виртуальной среде. Я не помню подобных проблем в прошлом, и я не смог найти решение в Интернете.

В принципе, когда я пытаюсь запустить набор тестов в virtualenv, он отлично работает. Но как только я попытаюсь сделать это с помощью coverage, он терпит неудачу из-за отсутствия необходимых им модулей. Основываясь на некотором ответе на StackOverflow, я проверил свой script и обнаружил, что 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 или установить необходимые модули по всей системе, но должен быть более чистый способ.

Ответы

Ответ 2

Мне пришлось покинуть свой virtualenv после установки покрытия и активировать его, чтобы получить доступ к работе.

[[email protected] ~]$ virtualenv --no-site-packages venv
[[email protected] ~]$ source venv/bin/activate
(venv)[[email protected] ~]$ pip install coverage
(venv)[[email protected] ~]$ deactivate
[[email protected] ~]$ source venv/bin/activate