【发布时间】:2013-09-28 08:07:55
【问题描述】:
我最近偶然发现了在虚拟环境中运行覆盖测量的一些问题。我不记得过去有类似的问题,也无法在网上找到解决方案。
基本上,当我尝试在 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包? -
@Bogdan:它已经在那里了,所以我没有尝试(重新)安装它。但是当我执行
pip install -U coverage时,我得到“Requirement already up-to-date: coverage in ./venv/lib/python2.7/site-packages”。
标签: python virtualenv coverage.py python-coverage