最近、仮想環境内でカバレッジ測定を実行する際に問題が発生しました。過去に同様の問題が発生した記憶はなく、Web 上で解決策を見つけることもできませんでした。
基本的に、virtualenv でテスト スイートを実行しようとすると、正常に動作します。しかし、 を使用して実行しようとすると、必要なモジュールが不足しているために失敗します。StackOverflow の回答に基づいてスクリプトをチェックしたところ、同じ 内から実行している場合でも、異なるインタープリターが使用されていることがcoverage
わかりました。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
が、もっとクリーンな方法が必要です。
ベストアンサー1
カバレッジをインストールした後、仮想環境をそのままにして、カバレッジを機能させるために再度アクティブ化する必要がありました。
[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