我最近偶然發現了一些在虛擬環境中運行覆蓋率測量的問題。過去我不記得類似的問題,也沒有能夠在網絡上找到解決方案。在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
或在系統範圍內安裝所需的模塊,但必須有一個更清潔的方式。
我不能在windows上重現這一點,恐怕。覆蓋率工作正常。 + 1幫助有需要的同伴pythonista :) –
您是否嘗試在您正在創建的virtualenv中安裝「coverage」包? – fjarri
@Bogdan:它已經在那裏,所以我沒有嘗試(重新)安裝它。但是當我執行'pip install -U coverage'時,我會得到''Requirement already up-to-date:coverage in。/ venv/lib/python2.7/site-packages'「。 – Tadeck