Skip to content
Latchkey

venv vs virtualenv: どちらのPython分離?

venvはPython標準ライブラリに同梱されています。virtualenvは、より速く機能が豊富なサードパーティツールで、古いPythonもサポートします。

venvはPython 3.3+に組み込まれており、追加インストールなしで分離環境を作成するデフォルトの方法です。virtualenvはそれより前からあり、環境をより速く作成し、Python 2や古い3.xをサポートし、より多くの設定とプラグインシステムを提供します。単一の最近のPython上のモダンなプロジェクトにはvenvで十分です。virtualenvは速度、レガシーバージョン、高度な機能でその価値を発揮します。

venvvirtualenv
同梱はい (stdlib)pip install
速度良好より速い作成
Pythonバージョン3.3+2.7 と 3.x
機能最小限より多くのオプション、プラグイン
最適な用途モダンな単一バージョン速度、レガシー、高度な用途

CIでは

venvは追加が何も要らず、モダンなPythonが動くあらゆる場所で動作するため、最もシンプルなCIの選択肢です。virtualenvは環境をやや速く作成し、古いPythonを対象とするか追加機能が欲しい場合にのみ必要です。大半のpipelineはvenvを使い、違いに気づくことはありません。

高速化

環境ディレクトリそのものではなく、依存関係のインストール (pip cache + lockfile) をcacheしましょう。どちらのツールもCI runner上で実行されます。より高速なマネージドrunnerはインストールとテストのステップを短縮します。

結論

最近のPython上のモダンなプロジェクト: venv。組み込みで追加は何も要りません。virtualenvは、より速い作成、Python 2や古い3.xのサポート、またはより豊富な機能セットが必要なとき。大半のチームにとってvenvがよりシンプルなデフォルトです。

関連ガイド