2013-09-23 37 views
14

我最近偶然發現了一些在虛擬環境中運行覆蓋率測量的問題。過去我不記得類似的問題,也沒有能夠在網絡上找到解決方案。在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或在系統範圍內安裝所需的模塊,但必須有一個更清潔的方式。

+0

我不能在windows上重現這一點,恐怕。覆蓋率工作正常。 + 1幫助有需要的同伴pythonista :) –

+1

您是否嘗試在您正在創建的virtualenv中安裝「coverage」包? – fjarri

+0

@Bogdan:它已經在那裏,所以我沒有嘗試(重新)安裝它。但是當我執行'pip install -U coverage'時,我會得到''Requirement already up-to-date:coverage in。/ venv/lib/python2.7/site-packages'「。 – Tadeck

回答

11

pip install coverage在新VENV

[[email protected] ~]$ virtualenv venv 
[[email protected] ~]$ source venv/bin/activate 
(venv)[[email protected] ~]$ pip install coverage 
(venv)[[email protected] ~]$ echo 'import sys; print(sys.executable)' > test.py 
(venv)[[email protected] ~]$ python test.py 
/home/alex/venv/bin/python 
(venv)[[email protected] ~]$ coverage run test.py 
/home/alex/venv/bin/python 
(venv)[[email protected] ~]$ 
+0

您的解決方案有所幫助 - 我在virtualenv中重新安裝了'coverage'。它被安裝了,但不知怎的,命令被覆蓋了nad指向錯誤的地方。現在它工作正常。謝謝! – Tadeck

+0

這也適用於我。我認爲在全球範圍內安裝的覆蓋率就足夠了,但它仍然拋出與我的虛擬環境中安裝的軟件包相關的導入錯誤,即使我在運行覆蓋率時激活了虛擬環境......似乎覆蓋率應該支持這種(常見)使用案件。 –

13

我不得不離開我的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 
+0

我很抱歉,這不是一個答案,那是virtualenv維護者的錯誤報告。 – Tritium21

+4

不知道爲什麼你得到這個,它正是什麼導致我的問題downvote。四處升騰。 – 2014-09-05 04:27:49

+0

任何人都知道這裏有什麼魔法? – Ullullu