Python パッケージ管理の定番ツール
パッケージのインストール
新しいパッケージを環境に追加する際の基本操作です。
| 目的 | コマンド | 説明 |
|---|---|---|
| 基本インストール | | PyPI (Python Package Index) から最新バージョンのパッケージをインストールします。最も基本的な使い方です。例: |
| バージョン指定 | | 指定したバージョンのパッケージをインストールします。例: |
| 最小バージョンの指定 | | 指定したバージョン以上の最新版をインストールします。比較演算子 (<, >, <=, >=, !=) が利用可能です。クォーテーションで囲むのが安全です。例: |
| 複数バージョン条件 | | 複数のバージョン条件をカンマ区切りで指定できます。例: |
| 複数パッケージの一括インストール | | 複数のパッケージを一度にインストールできます。スペースで区切ります。例: |
| requirements.txt からインストール | | requirements.txt ファイルに記載されたパッケージリストを一括でインストールします。プロジェクトの依存関係管理に不可欠です。-r は --requirement の略です。ファイル名は任意に変更可能です。例: |
| Gitリポジトリからインストール | | Gitリポジトリから直接パッケージをインストールします。開発中のライブラリや、PyPIに公開されていないパッケージのインストールに利用します。例: |
| Gitリポジトリ (特定ブランチ/タグ/コミット) | | 特定のブランチ、タグ、コミットハッシュを指定してインストールできます。#egg=パッケージ名 は省略可能な場合もありますが、依存関係解決のために推奨されます。例: |
| Gitリポジトリ (SSH経由) | | SSH認証を利用してプライベートリポジトリなどからインストールする場合に使用します。事前にSSH鍵の設定が必要です。 |
| ローカルファイルからインストール | | ダウンロード済みのWheelファイル (.whl)、ソースアーカイブ (.tar.gz, .zip)、またはローカルのプロジェクトディレクトリからインストールします。オフライン環境や独自パッケージのインストールに用います。 |
| 編集可能モード (Editable mode) | | パッケージをアンインストール・再インストールすることなく、ソースコードの変更が即座に反映されるモードでインストールします (シンボリックリンクのような挙動)。主にパッケージ開発時に使用します。-e は --editable の略です。 |
| 特定のインデックスURLからインストール | | デフォルトのPyPI (pypi.org) ではなく、指定したインデックスサーバーからパッケージを探してインストールします。社内PyPIサーバーなどを利用する場合に使います。-i は --index-url の略です。 |
| 追加のインデックスURLを指定 | | デフォルトのPyPIに加えて、追加のインデックスサーバーも検索対象にします。複数のPyPIサーバーを併用したい場合に利用します。 |
| 信頼されたホストを指定 | | HTTPSではなくHTTPで提供されるインデックスサーバーを利用する場合など、SSL検証をスキップしたいホストを指定します。セキュリティリスクを理解した上で使用してください。 |
| 依存関係のみインストール (パッケージ自体は除く) | | パッケージの依存関係をインストールせずに、指定したパッケージのみをインストールします。依存関係は別途管理する場合などに使用します。 |
| 依存関係を無視して強制インストール | | すでにインストールされているパッケージやその依存関係を無視して、強制的に再インストールします。問題が発生した場合のトラブルシューティングなどに使いますが、注意が必要です。 |
| Wheelキャッシュを使用しない | | ビルド済みのWheelキャッシュを使用せずに、毎回ソースからビルドしてインストールします。キャッシュが原因で問題が発生している場合に試します。 |
| ユーザーディレクトリへのインストール | | システム全体ではなく、現在のユーザーのホームディレクトリ配下にパッケージをインストールします。システムへの書き込み権限がない場合や、ユーザー固有の環境を構築したい場合に利用します。環境変数 `PYTHONUSERBASE` で場所を確認・変更できます。 |
| インストール前に確認 | | 実際にインストールは行わず、何がインストールされるかを表示します。-d オプション (--download) と組み合わせると、ダウンロードのみ行うことも可能です。 |
| プロキシ経由でのインストール | | プロキシサーバー経由でインターネットに接続する必要がある環境で使用します。環境変数 `HTTP_PROXY`, `HTTPS_PROXY` でも設定可能です。 |
パッケージのアンインストール
不要になったパッケージを環境から削除します。
| 目的 | コマンド | 説明 |
|---|---|---|
| 基本アンインストール | | 指定したパッケージをアンインストールします。通常、削除するファイル一覧が表示され、確認を求められます (y/n)。 |
| 複数パッケージの一括アンインストール | | 複数のパッケージを一度にアンインストールできます。スペースで区切ります。 |
| requirements.txt からアンインストール | | requirements.txt ファイルに記載されたパッケージリストを一括でアンインストールします。依存関係は自動的には削除されない点に注意が必要です。 |
| 確認なしでのアンインストール | | アンインストール前の確認プロンプト (y/n) をスキップし、自動的に「yes」と回答して削除を実行します。スクリプトなどで自動化する際に便利ですが、誤操作に注意が必要です。 |
注意:
pip uninstall は通常、指定されたパッケージのみを削除し、そのパッケージが依存していた他のパッケージは削除しません。不要になった依存パッケージは別途確認・削除する必要があります (例: `pip-autoremove` などの外部ツールを利用)。 パッケージの確認・一覧表示
現在インストールされているパッケージや、特定のパッケージの詳細情報を確認します。
| 目的 | コマンド | 説明 |
|---|---|---|
| インストール済みパッケージ一覧 | | 現在のアクティブなPython環境にインストールされている全パッケージとそのバージョンを一覧表示します。 |
| 古いパッケージの確認 | | インストール済みパッケージの中で、PyPIで新しいバージョンが利用可能なものをリストアップします。現在のバージョンと最新バージョンが表示されます。アップグレードの検討に役立ちます。 |
| 最新でないパッケージの確認 (編集可能含む) | | インストール済みのパッケージのうち、最新バージョンであるものをリストアップします。 |
| 編集可能モードのパッケージのみ表示 | | pip install -e でインストールされたパッケージのみをリストアップします。 |
| ローカルパッケージのみ表示 (非推奨) | | システムワイドなパッケージを除き、現在の環境 (例: venv) にインストールされたものだけを表示しようと試みますが、意図通りに動作しない場合があります。通常は `pip list` で十分です。 |
| 一覧表示形式の変更 (Columns) | | パッケージ名とバージョンを列形式で表示します (デフォルト)。 |
| 一覧表示形式の変更 (Freeze) | | requirements.txt と同じ形式 (パッケージ名==バージョン) で一覧表示します。後述の `pip freeze` と同じです。 |
| 一覧表示形式の変更 (JSON) | | インストール済みパッケージの情報をJSON形式で出力します。他のツールやスクリプトで処理する際に便利です。 |
| 特定のパッケージ情報表示 | | 指定したパッケージの名前、バージョン、概要、ホームページURL、作者、ライセンス、インストール場所、依存関係などの詳細情報を表示します。例: |
| パッケージのファイル一覧表示 | | 指定したパッケージに含まれるファイルの一覧を表示します。インストールされたファイルのパスを確認できます。 |
| requirements.txt 形式での一覧表示 | | インストールされているパッケージを パッケージ名==バージョン の形式で一覧表示します。この出力をリダイレクト (>) して requirements.txt ファイルを作成するのが一般的です。例: |
| `pip freeze` (ローカルのみ) | | システムグローバルなパッケージを除外して、現在の仮想環境などにインストールされたパッケージのみを `freeze` 形式で表示しようと試みますが、意図通りに動作しない場合があります。仮想環境を使っている場合は通常不要です。 |
| `pip freeze` (ユーザーのみ) | | `–user` オプションでインストールされたパッケージのみを `freeze` 形式で表示します。 |
| `pip freeze` (全環境) | | `pip` 自体や `setuptools` など、通常 `pip freeze` では出力されないパッケージも含めて全て表示します。特定の状況下でのデバッグなどに役立ちます。 |
| 依存関係ツリー表示 (外部ツール) | | pip 自体の機能ではありませんが、pipdeptree という外部ツールをインストールすると、パッケージ間の依存関係をツリー形式で分かりやすく表示できます。どのパッケージがどのパッケージに依存しているかを確認するのに非常に便利です。pipdeptree --reverse で逆引きも可能です。 |
| 依存関係のチェック | | インストール済みのパッケージ間で、依存関係のバージョンが満たされているか、競合がないかなどをチェックします。問題が見つかると表示されます。環境の健全性を確認するのに役立ちます。 |
パッケージのアップグレード
インストール済みのパッケージを新しいバージョンに更新します。
| 目的 | コマンド | 説明 |
|---|---|---|
| 基本アップグレード | | 指定したパッケージを PyPI で利用可能な最新の安定版にアップグレードします。依存関係も必要に応じて更新されます。-U は --upgrade の略です。例: |
| 全パッケージのアップグレード (注意) | 以下のコマンドは非推奨です: | インストールされている全ての古いパッケージをアップグレードしようと試みるコマンド例です。しかし、これは依存関係のコンフリクトを引き起こす可能性が高いため、一般的には推奨されません。 個別にアップグレードするか、pip-review のような外部ツールを使う方が安全です。 |
| アップグレード戦略の指定 (Eager) | | 依存関係も含めて、可能な限り最新バージョンにアップグレードしようとします。これがデフォルトの挙動です。 |
| アップグレード戦略の指定 (Only-if-needed) | | 指定したパッケージのアップグレードに必要な最小限の依存関係のみをアップグレードします。依存関係の変更を最小限に抑えたい場合に使用します。 |
| プレリリース版/開発版へのアップグレード | | 安定版だけでなく、アルファ版 (a)、ベータ版 (b)、リリース候補版 (rc) などのプレリリースバージョンも含めて最新版にアップグレードします。新しい機能を試したい場合などに利用します。 |
| 特定のバージョンへダウングレード | | アップグレードではなく、特定の古いバージョンをインストールすることで、実質的なダウングレードを行います。--force-reinstall オプションが必要な場合もあります。例: |
アップグレードの注意点: パッケージをアップグレードすると、依存関係の変更により既存のコードが動作しなくなる可能性があります。特にメジャーバージョンアップの場合は注意が必要です。アップグレード前に変更点を確認し、テストを行うことを推奨します。仮想環境での作業が安全です。
パッケージの検索
PyPI で公開されているパッケージを検索します。
補足:
pip search コマンドは、PyPI の負荷軽減のため、現在は非推奨となっており、機能が制限されているか、将来的に削除される可能性があります。PyPI のウェブサイト (https://pypi.org/) で直接検索することが推奨されています。 | 目的 | コマンド (非推奨) | 説明 |
|---|---|---|
| PyPIでのパッケージ検索 | | 指定したキーワードに一致するパッケージを PyPI で検索し、パッケージ名と概要を表示します。現在はこのコマンドの利用は推奨されていません。例: |
pip 自体の管理
pip ツール自体のバージョンを確認したり、アップグレードしたりします。
| 目的 | コマンド | 説明 |
|---|---|---|
| pip のアップグレード | | pip 自身を最新バージョンにアップグレードします。pip の機能改善やバグ修正が含まれるため、定期的なアップグレードが推奨されます。環境によっては `python -m pip …` の形式でないと正しく動作しない場合があります。 |
| pip のバージョン確認 | | 現在使用している pip のバージョンと、それがインストールされている Python のパスを表示します。 |
キャッシュ管理
pip が使用するキャッシュの情報を表示したり、削除したりします。
| 目的 | コマンド | 説明 |
|---|---|---|
| キャッシュ情報の表示 | | pip が使用するキャッシュディレクトリの場所や、現在のキャッシュサイズなどを表示します。 |
| キャッシュディレクトリの表示 | | キャッシュが保存されているディレクトリのパスを表示します。 |
| キャッシュ内容の一覧表示 | | キャッシュされている Wheel ファイルの一覧を表示します。オプションでワイルドカード (*) を使ったパターンマッチングによる絞り込みも可能です。例: |
| 特定のキャッシュの削除 | | 指定したパターンに一致するキャッシュファイル (Wheel) を削除します。例: |
| 全キャッシュの削除 | | pip のキャッシュを全て削除します。ディスク容量を確保したい場合や、キャッシュが原因と思われる問題が発生した場合に実行します。実行には確認が必要です。 |
キャッシュの役割: pip は一度ダウンロード・ビルドしたパッケージ (Wheel ファイル) をキャッシュしておくことで、次回以降のインストールを高速化します。通常は削除する必要はありませんが、ディスク容量の圧迫や、稀にキャッシュの破損による問題が発生することがあります。
設定ファイル (pip.conf / pip.ini)
pip のデフォルトの挙動をカスタマイズするための設定ファイルについて説明します。
| 項目 | 内容 | 説明 |
|---|---|---|
| 設定ファイルの場所 | Linux/macOS:
| pip はこれらの場所から設定ファイルを読み込みます。ユーザー設定がグローバル設定を上書きし、仮想環境設定がユーザー設定を上書きします。ファイルが存在しない場合は作成します。ファイル名は Linux/macOS では pip.conf、Windows では pip.ini です。 |
| 設定ファイルの形式 | | INI ファイル形式で記述します。[global] セクションは全てのコマンドに適用される設定を書きます。各コマンド名のセクション (例: [install], ) にはそのコマンド固有のデフォルトオプションを設定できます。コマンドラインオプションの -- を除いた名前がキーになります (例: --index-url は index-url)。真偽値は true/false または yes/no で指定します。 |
| よく使われる設定例 |
| 設定ファイルを使うことで、毎回コマンドラインオプションを指定する手間を省くことができます。特に、社内PyPIやプロキシ環境などでは設定しておくと便利です。 |
その他便利なコマンド
pip のヘルプ表示やデバッグに役立つコマンドです。
| 目的 | コマンド | 説明 |
|---|---|---|
| ヘルプ表示 (全体) | | pip で利用可能なコマンドの一覧と、グローバルオプションの概要を表示します。 |
| ヘルプ表示 (特定コマンド) | | 指定したコマンド (例: install, list) の詳細なヘルプ、利用可能なオプションを表示します。例: |
| デバッグ情報の表示 | | コマンド実行時の詳細な情報を出力します。問題発生時の原因調査に役立ちます。-vv, -vvv のように複数指定すると、さらに詳細な情報 (デバッグレベル) が表示されます。 |
| 構成情報の表示 | | 現在有効な設定ファイルとその内容、設定の由来(どのファイルから読み込まれたか)を表示します。設定が正しく反映されているか確認するのに便利です。 |
| 特定の設定値の取得 | | 指定したキー (例: global.index-url) の現在の設定値を取得します。 |
| 設定値の設定 (非推奨) | | 設定ファイルに値を書き込みます。ただし、どの設定ファイルに書き込まれるかは環境に依存するため、直接ファイルを編集する方が確実であり、推奨されます。 |
| 設定値の削除 (非推奨) | | 設定ファイルから指定したキーの設定を削除します。直接ファイルを編集する方が確実であり、推奨されます。 |