pipとは?Pythonのパッケージインストーラーを解説
pipはPythonの標準パッケージインストーラーです。Python Package Indexからライブラリをダウンロードし、環境にインストールします。
pipはPython開発者がパッケージをインストールするために使うツールです。最近のPythonに同梱され、Python Package Index (PyPI) と通信し、プロジェクトが必要とする依存関係を解決してインストールします。ほとんどすべてのPythonのCI pipelineは、pipを少なくとも一度は実行します。
pipとは
pipはPythonパッケージ向けのコマンドラインインストーラーです。PyPI (または設定されたインデックス) からパッケージを取得し、アクティブな環境にインストールし、ファイルから要件のリストを読み込めます。wheel (ビルド済みバイナリ) とソース配布物の両方を扱います。
仕組み
依存関係はrequirements.txtまたはpyproject.tomlで宣言します。「pip install」を実行するとバージョンを解決し、利用できる場所ではwheelをダウンロードし、site-packagesにインストールします。再現性のために、チームは正確なバージョンを固定し、多くの場合hash付きで完全にロックされたrequirementsファイルを生成します。pipはアクティブな環境に対してインストールするため、ほとんど常に仮想環境と組み合わせて使われます。
requirementsの例
固定されたrequirementsファイルとインストールコマンドの組み合わせが一般的なパターンです。
# requirements.txt
requests==2.31.0
pytest==8.0.0
# install exactly those versions
pip install -r requirements.txtCI/CDでの役割
pipelineでは、pipがtestの実行前に依存関係を復元します。バージョンを固定すること (できれば「pip install --require-hashes」でhashを使う) はbuildを再現可能にし、サプライチェーンの不意の事態から守ります。pipのダウンロードcacheやwheelのcacheを実行間でcacheすると、再ダウンロードを避けてjobを高速化でき、特にパッケージがネイティブ拡張をコンパイルする場合に効果的です。
代替ツール
PoetryとPDMは、インストール段階の上に依存関係の解決、lockfile、プロジェクト管理を加えます。uvはpipやvirtualenvを置き換えられる、Rust製の非常に高速なインストーラー兼リゾルバです。pipは、あらゆるPython環境が理解できる最小公倍数的なツールであり続けています。
重要なポイント
- pipはPyPIからPythonパッケージを取得し、アクティブな環境にインストールします。
- 再現性が高く安全なCIインストールのために、バージョン (できればhashも) を固定します。
- pipを仮想環境と組み合わせ、CIではダウンロードをcacheします。