【体験談】Windowsで突然pipが動かなくなった原因を調査したら、PATHの競合が犯人だった話

IT

はじめに

ローカルでAI関連のスクリプトを動かすためにPython環境を整えていたところ、 ある日突然 pip がまったく動かなくなる トラブルに遭遇しました。

普段は問題なく使えていたのに、急に以下のエラーが出るように。

コード

pip is not recognized as an internal or external command

Python自体は動くのに、pipだけが死んでいる状態。 原因が複数ありそうで、調査に2時間ほどかかったので記事化します。

発生した症状

コマンドプロンプトで pip を実行すると以下の状態。

  • pip が「認識されない」扱いになる
  • python コマンドは正常に動作
  • 仮想環境 venv 内でも pip が消えている

特に「python は動くのに pip が死んでいる」という状況は厄介で、 PATHの問題なのか、pip自体が破損しているのか判断が難しい状態でした。

実際に行った調査手順

① Python の場所を確認

まずは Python の実体がどこにあるか確認。

コード

where python

結果は以下の通り。

  • C:\Users\xxx\AppData\Local\Programs\Python\Python312\python.exe
  • C:\Windows\py.exe

複数のPythonが存在している状態。 この時点で「PATH競合の可能性が高い」と判断。

② pip の場所を確認

続いて pip の実体を確認。

コード

where pip

結果はまさかの 「見つかりません」

Pythonはあるのに pip が見つからないということは、 pip のパスが消えているか、pip自体が破損している可能性が高い。

③ pip を再インストール

Pythonには pip を再インストールする公式コマンドがあるので実行。

コード

python -m ensurepip --upgrade

すると pip が復活。

コード

Successfully installed pip-24.x.x

この時点で pip が使えるようになった…と思いきや、 まだコマンドプロンプトで pip が認識されない状態。

④ PATH を確認したら競合が発覚

環境変数 PATH を確認したところ、以下の問題を発見。

  • 古い Python 3.9 の PATH が残っている
  • 新しい Python 3.12 の PATH が後ろにある
  • Scripts フォルダの PATH が消えている

具体的には以下の2つが欠けていました。

  • C:\Users\xxx\AppData\Local\Programs\Python\Python312\
  • C:\Users\xxx\AppData\Local\Programs\Python\Python312\Scripts\

Scripts が消えていると pip が認識されないため、 これが今回のトラブルの根本原因でした。

⑤ PATH を修正して復旧

環境変数 PATH に以下を追加。

コード

C:\Users\xxx\AppData\Local\Programs\Python\Python312\
C:\Users\xxx\AppData\Local\Programs\Python\Python312\Scripts\

コマンドプロンプトを再起動して pip を実行すると…

pip が復活した。

なぜPATHが壊れたのか?

調べたところ、以下の可能性が高いです。

  • Pythonを複数バージョンインストールした
  • 古いPythonをアンインストールした時にPATHが消えた
  • Windows Updateで環境変数がリセットされた

特に複数バージョンのPythonを入れていると、 PATHが競合してトラブルが起きやすいと感じました。

同じ症状が出た時にまず確認すべきこと

以下の3つをチェックすれば、ほとんどのケースで原因が特定できます。

  • where python で複数バージョンがないか確認
  • pip の実体が存在するか確認
  • PATH に Scripts が入っているか確認

pipが突然死ぬトラブルは、ほぼPATHが原因です。

まとめ:pipが動かない時はPATHを疑うべき

今回のトラブルで学んだのは、 pipのエラーの7割はPATH競合が原因 ということ。

pipを再インストールしても直らない場合は、 環境変数を確認するのが最短ルートです。

コメント

タイトルとURLをコピーしました