Skip to content
Latchkey

pyenv vs conda: Pythonバージョンの管理

pyenvはPythonインタープリタのバージョンをインストールし切り替えます。condaはPythonとバイナリパッケージを含む環境全体を管理します。

pyenvはプロジェクトごとにPythonバージョンをビルド・選択し、パッケージのインストールはpipや他のツールに委ねます。condaは独自のPythonとクロス言語のパッケージマネージャーを同梱するため、単一のconda環境がインタープリタとコンパイル済み依存の両方を固定します。pyenvは軽量でPython専用です。condaは重めですが、ネイティブ依存のスタックを一箇所で解決します。

pyenvconda
管理対象Pythonバージョンバージョン + パッケージ
インストール方法ソースからビルドビルド済みバイナリ
非Python依存なしあり
フットプリント軽量重め
最適な用途Python専用のバージョン管理完全な科学環境

CIでは

pyenvはインタープリタをソースからビルドするため、buildがcacheされない限りコールドなrunnerでは遅くなります。多くのCIセットアップは代わりにrunner提供のPythonやsetup-pythonを使います。condaはビルド済みのPythonとパッケージを取り込みますが、solverのコストを払います。単一の固定バージョンには、runner提供のPythonが通常最もシンプルです。condaは重いネイティブスタックに適します。

高速化

バージョンの固定をキーにして、ビルド済みインタープリタ (pyenv) またはpackage cache (conda) をcacheしましょう。どちらもCI runner上で実行されます。より高速なマネージドrunnerはbuildとsolveのステップを短縮します。

結論

開発マシンでPythonバージョンだけを管理する: pyenv(またはCIではsetup-python)。ネイティブの非Python依存を一緒に固定した完全な環境が必要: conda。多くのチームはCIで直接Pythonを固定し、condaは科学スタックのために取っておきます。

関連ガイド