Niedawno natknąłem się na jakiś problem z prowadzeniem pomiarów zasięgu w środowisku wirtualnym. Nie pamiętam podobnych problemów w przeszłości, ani nie mogłem znaleźć rozwiązania w sieci.Uruchamianie zasięgu wewnątrz virtualenv
Zasadniczo, gdy próbuję uruchomić zestaw testów w virtualenv, działa dobrze. Ale tak szybko, jak próbuję to zrobić przy użyciu coverage
, zawiedzie się z powodu braku modułów, których wymaga. Opierając się na pewnej odpowiedzi na temat StackOverflow, sprawdziłem mój skrypt i odkryłem, że coverage
używa innego interpretera, nawet jeśli działa z tego samego virtualenv
.
Oto jak go odtworzyć:
$ 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
Pytanie brzmi: jak zrobić coverage
pracę z wirtualnym środowiskiem płynnie? Mogę zmienić sys.path
lub zainstalować wymagane moduły w całym systemie, ale musi być to czystszy sposób.
Nie mogę tego odtworzyć w oknach, obawiam się. Zasięg działa dobrze. + 1, aby pomóc innej pythonistki w potrzebie :) –
Czy próbowałeś zainstalować pakiet '' coverage'' w tworzonym wirtualnym komputerze? – fjarri
@Bogdan: Już tam był, więc nie próbowałem (ponownie) go instalować. Ale kiedy wykonuję 'pip install -U coverage', otrzymuję" 'Required already up-to-date: coverage in./Venv/lib/python2.7/site-packages'". – Tadeck