pipで古いパッケージを確認し、安全に更新する
まず結論
pip 管理の環境を更新するときは、仮想環境で古いパッケージを確認し、変更内容を見てから対象を指定して更新します。
python -m pip list --outdated
python -m pip install --upgrade requests
python -m pip check
アプリケーションでは、全パッケージの一括更新を日常操作にしません。依存関係ファイルを変更し、テストを通してから反映します。
使う場面
- 開発用の仮想環境で古い依存を調べる
- セキュリティ修正や不具合修正を取り込む
- Python 本体の更新前に依存の互換性を確認する
共有サーバーや OS 付属 Python へ直接実行せず、venv などで環境を分けます。
構文と設定項目
| コマンド | 用途 |
|---|---|
python -m pip list --outdated |
更新候補を一覧する |
python -m pip show PACKAGE |
現在の情報を確認する |
python -m pip install --upgrade PACKAGE |
指定したパッケージを更新する |
python -m pip check |
インストール済み依存の矛盾を確認する |
python -m pip freeze |
現在の環境を要件形式で出力する |
python -m pip と書くと、どの Python 環境の pip を使うかが明確になります。
実装例
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip list --outdated
更新対象を決めたら、依存関係を管理しているファイルを変更します。requirements.txt を手で管理する例なら、バージョン範囲を更新して新しい環境へ再インストールします。
たとえば、更新前後の差分をレビューできるように、対象行だけを変更します。次は書き方の例です。
- requests>=2.31,<3
+ requests>=2.32,<3
変更後は、同じ仮想環境へ再インストールし、依存関係とプロジェクトのテストを確認します。
python -m pip install -r requirements.txt
python -m pip check
pytest
pip check が成功しても、アプリケーションの互換性までは確認できません。pytest の結果と requirements.txt の差分をレビューし、失敗した場合は依存の変更を戻すか、対象パッケージの互換性を調べてから再度更新します。
依存解決とロックを再現可能にしたい場合は、pip-tools、Poetry、uv など、プロジェクトで採用した管理方法に寄せます。
つまずきやすい点
pip freeze の出力をそのまま一括更新する
直接依存と推移的依存を区別できず、意図しないメジャー更新を取り込みます。変更差分とリリースノートを確認します。
xargs でパッケージ名を雑に渡す
表形式の出力は機械処理用の安定した契約とは限りません。JSON 形式を使う場合でも、更新対象を表示してから実行します。
pip-review --auto を本番環境で使う
pip-review は更新候補の確認や一括更新を補助しますが、互換性を保証しません。試すなら破棄できる環境で使い、依存ファイルとテスト結果を成果物にします。
関連する機能
まとめ
更新の目的は最新版にそろえることではなく、必要な修正を再現可能な形で取り込むことです。仮想環境、明示的な対象指定、依存チェック、テストを一連の流れにします。
Discussion