venv vs virtualenv: どちらのPython分離?
venvはPython標準ライブラリに同梱されています。virtualenvは、より速く機能が豊富なサードパーティツールで、古いPythonもサポートします。
venvはPython 3.3+に組み込まれており、追加インストールなしで分離環境を作成するデフォルトの方法です。virtualenvはそれより前からあり、環境をより速く作成し、Python 2や古い3.xをサポートし、より多くの設定とプラグインシステムを提供します。単一の最近のPython上のモダンなプロジェクトにはvenvで十分です。virtualenvは速度、レガシーバージョン、高度な機能でその価値を発揮します。
| venv | virtualenv | |
|---|---|---|
| 同梱 | はい (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がよりシンプルなデフォルトです。
関連ガイド
pip vs conda: Which Python Installer in CI?pip vs conda for Python projects: pure-Python packages vs full binary environments with non-Python deps. Spee…
pyenv vs conda: Managing Python Versionspyenv vs conda for Python version management: build-from-source interpreters vs prebuilt conda environments.…
pip vs Poetry: Which Python Dependency Tool for CI?pip vs Poetry for Python CI: lockfiles, reproducibility, install speed, and caching. Which dependency tool gi…