pip – Pythonパッケージのインストール・管理を行うCLI

依存関係管理

pip は Python の公式パッケージインストーラで、PyPI や私設インデックス、ローカルファイル/リポジトリからパッケージを導入・更新・削除できます。python -m pip の形式で実行すると、使いたい Python 実行環境を明示でき、仮想環境と相性が良いです。(pip.pypa.io)
実務では「venv を作る → pip install -r requirements.txtpip list --outdatedで更新確認」の流れが定番です。(pip.pypa.io)

構文(Syntax)

python -m pip <command> [OPTIONS] [ARGS...]

# よく使うコマンド
python -m pip install PKG [PKG2 ...]
python -m pip uninstall PKG [PKG2 ...]
python -m pip list [--outdated]
python -m pip show PKG
python -m pip freeze
python -m pip check
python -m pip cache [dir|info|list|remove|purge]
python -m pip index versions PKG
  • コマンド一覧は pip 公式 CLI リファレンスを参照。(pip.pypa.io)

主なオプション一覧

オプション説明使用例
-r FILErequirements ファイルから一括導入python -m pip install -r requirements.txt (pip.pypa.io)
-c FILEconstraints(上限固定などの制約)を適用python -m pip install -r req.txt -c constraints.txt (pip.pypa.io)
-U, --upgrade指定パッケージを最新版へ更新python -m pip install -U requests (pip.pypa.io)
--preプレリリース版も許可python -m pip install --pre fastapi (pip.pypa.io)
--userユーザー領域にインストール(管理者権限不要)python -m pip install --user mypy (pip.pypa.io, Python documentation)
--no-deps依存関係を入れないpython -m pip install --no-deps pkg (pip.pypa.io)
--no-cache-dirキャッシュを使わないpython -m pip install --no-cache-dir aiohttp (pip.pypa.io)
-i URL, --index-url URL既定インデックス(PyPI 以外)を指定python -m pip install -i https://mirror/simple/ pkg (pip.pypa.io)
--extra-index-url URL追加のインデックスを併用python -m pip install --extra-index-url https://extra/simple pkg (pip.pypa.io)
--trusted-host HOST証明書検証をしないホストを許可(やむを得ない場合のみ)python -m pip install --trusted-host myrepo pkg (pip.pypa.io)
-t DIR, --target DIRsite-packages 以外の任意ディレクトリに導入python -m pip install -t ./vendor requests (pip.pypa.io)
--break-system-packagesOS 管理の Python への書き込み保護(PEP 668)を一時的に解除python -m pip install PKG --break-system-packages (pip.pypa.io, Python Packaging User Guide)

メモ: pip search は PyPI 側 API 廃止のため無効になりました。検索は https://pypi.org または pip index versions などを利用します。(pip.pypa.io)

実行例

仮想環境を作ってパッケージを導入

説明: プロジェクト直下に venv を作成し、requests を導入します。
コマンド:

python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
python -m pip install requests
python -m pip show requests

出力例(抜粋):

Name: requests
Version: 2.x.y
Location: /path/to/project/.venv/lib/pythonX.Y/site-packages

python -m pip で “その Python” に対して実行)(pip.pypa.io)

requirements/constraints を使った再現性インストール

説明: 依存を requirements.txt に、上限等の固定を constraints.txt に分けて管理。
コマンド:

python -m pip install -r requirements.txt -c constraints.txt

-r-c の意味は pip 公式に準拠)(pip.pypa.io)

社内リポジトリを併用してインストール

説明: 既定は PyPI。必要に応じて追加インデックスを併用します。
コマンド:

python -m pip install \
  --index-url https://pypi.org/simple \
  --extra-index-url https://repo.example.com/simple \
  internal-pkg

(pip.pypa.io)

古くなったパッケージを確認し更新

説明: アウトデートを確認し、個別に更新します。
コマンド:

python -m pip list --outdated
python -m pip install -U <古いパッケージ名>

(pip.pypa.io)

キャッシュの場所確認と全削除

説明: トラブル時にキャッシュをクリアします。
コマンド:

python -m pip cache dir
python -m pip cache purge

(pip.pypa.io)

エラー例:OS管理環境(PEP 668)でのインストール拒否

説明: ディストリが管理する Python では、システム破壊防止で pip が書き込みをブロックすることがあります。
コマンド:

python -m pip install somepkg
# → error: externally-managed-environment(要約)

対処: 仮想環境の使用が推奨(python -m venv .venv)。どうしても必要なら自己責任で --break-system-packages を付与します。(Python Packaging User Guide, pip.pypa.io)

関連コマンド

  • python -m venv : プロジェクトごとの仮想環境を作成。
  • pip index versions PKG : 利用可能なバージョン一覧(実験的)。(pip.pypa.io)
  • pip cache : wheel キャッシュの確認・削除。(pip.pypa.io)
  • pip check : 依存関係の破綻チェック。(pip.pypa.io)
  • pip freeze : 現在の環境を requirements 形式で出力。(pip.pypa.io)

備考

  • ベストプラクティス: python -m pip で実行し、仮想環境を使う。ユーザー環境に入れる場合は --user を検討。(pip.pypa.io, Python documentation)
  • 検索について: pip search は無効です。PyPI Web 検索や pip index を使います。(pip.pypa.io)
  • 設定ファイル: pip config setindex-url などを永続設定できます(グローバル/ユーザー/venv 単位)。(pip.pypa.io)
  • インデックス/ミラー: --index-url/--extra-index-url/--find-links で取得先を制御できます。(pip.pypa.io)
  • システム改変の抑止: PEP 668 により一部ディストリで OS 管理の Python は保護されます。やむを得ない場合のみ --break-system-packages を使用。(Python Packaging User Guide)

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント