できない.dev

pip をアップグレードできない(pip install --upgrade pip が失敗する)

Windows では pip.exe が自分自身を上書きできず Access is denied で失敗するのが定番。
python -m pip install --upgrade pip と python -m 経由で実行する。
権限エラーや PEP 668 の拒否は venv 内で行うのが基本。

#pip#upgrade#windows#permission#venv

公開: 更新:

要約

pip install --upgrade pip が失敗する典型は Windows で、ERROR: To modify pip, please run the following command: python -m pip install --upgrade pipAccess is denied が出るパターン。pip.exe 経由の実行では、起動中の自分自身を上書きできない ためで、python -m pip install --upgrade pippython -m 経由で実行する のが正しい手順。
Unix 系の権限エラーや PEP 668 による拒否は、システム Python を直接触らず venv 内で行うことで解決する。

よくある原因

  1. 自分自身の上書き(Windows): pip.exe の実行中はそのファイルがロックされ、置き換えできない
  2. 書き込み権限が無い: システム Python の site-packages への変更には管理者権限が必要
  3. externally-managed-environment: OS 管理の Python(Debian / Ubuntu / Homebrew など)が PEP 668 でシステム環境の変更を拒否する
  4. ネットワーク: プロキシ環境や SSL 検査により PyPI への接続が失敗している

解決策

1. python -m 経由で実行する

python -m pip install --upgrade pip
# Windows の py ランチャー利用時
py -m pip install --upgrade pip

この形なら pip.exe 自体は起動せず、モジュールとして実行されるため自分自身の上書き問題が起きない。
公式ドキュメントの Upgrading pip もこの手順を案内している。

2. venv 内でアップグレードする

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

venv 内なら権限エラーも PEP 668 の拒否も発生しない。
プロジェクト作業用の pip はシステムではなく venv 側を新しくすれば十分なことが多い。

3. ユーザー環境に入れる

python -m pip install --upgrade --user pip

venv を使わない場合は --user でユーザーディレクトリ側にインストールできる。
ただし PATH の優先順位によっては古い方が呼ばれ続けるため、python -m pip --version でどちらが使われているかを確認する。

4. ネットワーク設定を見直す

プロキシ環境では --proxy オプションや環境変数(HTTPS_PROXY)を設定する。
SSL エラーで失敗する場合は証明書設定の問題であり、アップグレード以前に pip 全体の通信が失敗しているので、そちらを先に解決する。

この記事は役立ちましたか?