19

我最近偶然发现了在虚拟环境中运行覆盖率测量的一些问题。我不记得过去类似的问题,也无法在网上找到解决方案。

基本上,当我尝试在 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或安装所需的模块,但必须有一种更简洁的方法。

4

2 回答 2

22

I had to leave my virtualenv after installing coverage and reactivate it to get coverage to work.

[alex@gesa ~]$ virtualenv --no-site-packages venv
[alex@gesa ~]$ source venv/bin/activate
(venv)[alex@gesa ~]$ pip install coverage
(venv)[alex@gesa ~]$ deactivate
[alex@gesa ~]$ source venv/bin/activate
于 2014-04-29T23:39:48.260 回答
13

pip install coverage在你的新 venv

[alex@gesa ~]$ virtualenv venv
[alex@gesa ~]$ source venv/bin/activate
(venv)[alex@gesa ~]$ pip install coverage
(venv)[alex@gesa ~]$ echo 'import sys; print(sys.executable)' > test.py
(venv)[alex@gesa ~]$ python test.py
/home/alex/venv/bin/python
(venv)[alex@gesa ~]$ coverage run test.py
/home/alex/venv/bin/python
(venv)[alex@gesa ~]$
于 2013-09-23T13:05:10.883 回答