pip vs conda: CIでどちらのPythonインストーラーを使う?
pipはPyPIからPythonパッケージを任意の環境にインストールします。condaはPython自体や非Pythonバイナリを含む完全な環境を管理します。
pipは標準のPythonインストーラーで、あなたが作成したvenvにPyPIからwheelとソース配布を取り込みます。condaはクロス言語のパッケージ・環境マネージャーで、独自のPythonとコンパイル済みライブラリ(CUDA、MKL、GDAL)を同梱するため、ネイティブ依存が厄介なデータサイエンスで人気です。pipは軽量で普及しており、condaはより難しいバイナリ依存のケースを解決します。
| pip | conda | |
|---|---|---|
| スコープ | Pythonパッケージ (PyPI) | 任意のパッケージ + Python自体 |
| 非Python依存 | 手動 / wheel | 組み込み (バイナリ) |
| 速度 | 速い | solverが遅い |
| 再現性 | requirements / lock | environment.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に手を伸ばします。
関連ガイド
conda vs pip: Which for Python CI Environments?conda vs pip for Python CI: native dependencies, environment management, and speed. When conda is worth the o…
mamba vs conda: A Faster conda Solver?mamba vs conda: a drop-in C++ reimplementation with a faster dependency solver vs the original. Speed, compat…
pyenv vs conda: Managing Python Versionspyenv vs conda for Python version management: build-from-source interpreters vs prebuilt conda environments.…