Skip to content
Latchkey

pip vs conda: CIでどちらのPythonインストーラーを使う?

pipはPyPIからPythonパッケージを任意の環境にインストールします。condaはPython自体や非Pythonバイナリを含む完全な環境を管理します。

pipは標準のPythonインストーラーで、あなたが作成したvenvにPyPIからwheelとソース配布を取り込みます。condaはクロス言語のパッケージ・環境マネージャーで、独自のPythonとコンパイル済みライブラリ(CUDA、MKL、GDAL)を同梱するため、ネイティブ依存が厄介なデータサイエンスで人気です。pipは軽量で普及しており、condaはより難しいバイナリ依存のケースを解決します。

pipconda
スコープPythonパッケージ (PyPI)任意のパッケージ + Python自体
非Python依存手動 / wheel組み込み (バイナリ)
速度速いsolverが遅い
再現性requirements / lockenvironment.yml / lock
最適な用途大半のPythonアプリデータサイエンス、ネイティブ依存

CIでは

pipのインストールは速く、pip cacheとlockfile経由できれいにcacheされます。conda環境のsolveは遅くなりうるため、チームはpackage cacheをcacheするか、より速いsolverのためにmambaに切り替えます。素のPython Webやライブラリの作業では、pipが速度で勝ります。重い科学スタックでは、condaがネイティブbuildと格闘する時間を節約します。

高速化

インストールがウォームになるよう、lockfileをキーにしてpipまたはcondaのpackage cacheをcacheしましょう。どちらもCI runner上で実行されます。より高速なマネージドrunnerはインストールと環境solveのステップを短縮します。

結論

標準的なPythonアプリとライブラリ: venvを使ったpip。重いネイティブ依存を伴うデータサイエンススタック: conda(または速度のためのmamba)。多くのチームはどこでもpipを使い、バイナリ依存が厄介になったときだけcondaに手を伸ばします。

関連ガイド