Skip to content
Latchkey

conda vs pip: Python CI環境にはどちらを?

condaとpipは重なりつつも異なる問題を解決します。CIではその差がセットアップ時間とネイティブライブラリに現れます。

pipはPyPIからPythonパッケージをインストールします。condaは、非Pythonの依存関係 (コンパイラ、CUDA、システムライブラリ) もインストールする、多言語対応のパッケージ・環境マネージャです。

pipconda
スコープPythonパッケージ (PyPI)Python + ネイティブ / 非Pythonライブラリ
環境マネージャなし (venvを使用)あり、組み込み
ネイティブ依存関係の扱いwheelsのみ強力 (バイナリパッケージ)
CIセットアップの重さ軽量より重い (インストーラ + solver)
典型的な用途Web/アプリのコードデータサイエンス / ML / 科学計算

CIにおいて

condaは、ビルドが難しいネイティブ依存関係 (NumPy/SciPyスタック、GDAL、CUDAツールキット) を事前ビルド済みのバイナリとして扱う必要があるときに真価を発揮します。壊れやすいソースからのコンパイルを避けられます。その代償は、より重いCIセットアップと、歴史的に遅かったsolverです (mamba/micromambaがこれを緩和します)。普通のPythonアプリには、pipのほうが軽く、セットアップも速いです。

どちらも高速化する

condaのパッケージディレクトリまたはpipのwheel cacheを、environment.yml やrequirementsのlockでキー付けしてcacheしましょう。condaでは、より小さく速いインストールのためにCIでmicromambaを優先してください。

結論

重いネイティブ/科学計算の依存関係: conda (理想的にはmicromamba)。素のPythonアプリ: venvを伴うpip。依存関係が純Pythonかネイティブかに応じてツールを合わせましょう。

関連ガイド