Windows10 でpip をupgrade したら「ModuleNotFoundError: No module named 'pip'」が発生するようになった


この記事は

気軽にpipをupgradeしようとしたら、失敗してハマったので、記録を残しておきます。

※2020/09/22 ページ下部に別コマンドを追記

環境

  • Windows10
  • Python 3.6.8
  • pip 19.2.1 --> 19.2.2

事象の発生

ふと、pip モジュールをアップグレードしようと思いました。
下記のように実行すると、エラーになりました。

> pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/8d/07/f7d7ced2f97ca3098c16565efbe6b15fafcba53e8d9bdb431e09140514b0/pip-19.2.2-py2.py3-none-any.whl (1.4MB)
     |████████████████████████████████| 1.4MB 656kB/s
Installing collected packages: pip
  Found existing installation: pip 19.2.1
    Uninstalling pip-19.2.1:
ERROR: Could not install packages due to an EnvironmentError: [WinError 5] アクセスが拒否されました。: 'd:\\python\\python36\\scripts\\pip.exe'
Consider using the `--user` option or check the permissions.

アクセス権が無いのか、失敗しています。
丁寧に「--user」オプションをつけるようメッセージも出ています。
「--user」オプションをつけて再度実行します。

PS D:\usr\VSCode> pip install --upgrade pip --user
Traceback (most recent call last):
  File "d:\python\python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "d:\python\python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\Python\Python36\Scripts\pip.exe\__main__.py", line 5, in <module>
ModuleNotFoundError: No module named 'pip'
PS D:\usr\VSCode> pip -V
Traceback (most recent call last):
  File "d:\python\python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "d:\python\python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\Python\Python36\Scripts\pip.exe\__main__.py", line 5, in <module>
ModuleNotFoundError: No module named 'pip'
PS D:\usr\VSCode>
PS D:\usr\VSCode> d:\\python\\python36\\scripts\\pip.exe
Traceback (most recent call last):
  File "d:\python\python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "d:\python\python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\python\python36\scripts\pip.exe\__main__.py", line 5, in <module>
ModuleNotFoundError: No module named 'pip'
PS D:\usr\VSCode> d:\\python\\python36\\scripts\\pip.exe -V
Traceback (most recent call last):
  File "d:\python\python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "d:\python\python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\python\python36\scripts\pip.exe\__main__.py", line 5, in <module>
ModuleNotFoundError: No module named 'pip'
>

しかし、すでにpipは帰らぬ人になっていました。
これ以降は、pipを実行するとすべて、ModuleNotFoundError: No module named 'pip' となってしまします。
pipを再インストールしたいが、pipが動作しない・・・。

pipのインストール

別な手段でインストールする必要があります。

Installation — pip 19.2.1 documentation を参考に、下記のファイルをダウンロードします。
https://bootstrap.pypa.io/get-pip.py

ダウンロードしたファイルをpythonで実行します。

> python get-pip.py

完了後、pipが正常動作するようになりました。

> pip -V
pip 19.2.2 from d:\python\python36\lib\site-packages\pip (python 3.6)

しかも、最新バージョンになっていました。

念のため、upgradeします。
こんどは、きちんと--userオプションをつけて。

> pip install --upgrade pip --user

すでに最新版になっているため、アップグレードはされませんでしたが、pipの実行は行われました。

ちなみに、
--user オプションをつけると、モジュールをユーザディレクトリにインストールします。
参考:pip 19.2.1 documentation » Reference Guide

2020/09/22 追記

今では、下記のコマンドでpipのアップデートを実行しています。
現状、トラブルは発生していません。

$ python -m pip install -U pip