Skip to content
Latchkey

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 with pinned versions
# requirements.txt
requests==2.31.0
pytest==8.0.0

# install exactly those versions
pip install -r requirements.txt

CI/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します。

関連ガイド