FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip'

Pythonのpipモジュールでエラーになったので調査したときの覚書。

環境: CentOS Stream 8, Python 3.9.13, pip 22.1.2

パッケージ一覧を表示
# python -m pip list

FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip'

pipの場所を確認
# which pip

/usr/local/bin/pip

リンクを張ればいいのかな?
他はどうなっているか確認。
# ll /usr/bin/pip*

lrwxrwxrwx 1 root root  23 Mar  1  2022 /usr/bin/pip-3 -> /etc/alternatives/pip-3
lrwxrwxrwx 1 root root  22 Jul  9 16:02 /usr/bin/pip3 -> /etc/alternatives/pip3
lrwxrwxrwx 1 root root   8 Sep 21 06:36 /usr/bin/pip-3.9 -> ./pip3.9
-rwxr-xr-x 1 root root 650 Sep 21 06:36 /usr/bin/pip3.9

前にalternativesでpipを登録したのを思い出した。
参考: Python3.6からPython3.9に切り替える

alternativesの確認
# alternatives --list
# alternatives --display pip

でも/usr/local/bin/pipを参照するようになっているのでalternativesは意味ない。
alternativesの登録を削除する。
# alternatives --remove pip /usr/bin/pip3.9
# alternatives --list
# ll /etc/alternatives/pip*
# rm -f /etc/alternatives/pip*
# ll /usr/bin/pip*
# rm -f /usr/bin/pip3 /usr/bin/pip-3

/usr/bin/pipにシンボリックリンクを張る。
# cd /usr/bin/
# ln -s ./pip3.9 /usr/bin/pip
# ll ./pip*

lrwxrwxrwx 1 root root   8 Dec 21 09:40 ./pip -> ./pip3.9
lrwxrwxrwx 1 root root   8 Sep 21 06:36 ./pip-3.9 -> ./pip3.9
-rwxr-xr-x 1 root root 650 Sep 21 06:36 ./pip3.9

パッケージ一覧
# python -m pip list

FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3'

削除したpip3コマンドがないってエラー。
pip3もシンボリックリンクする。
# ln -s ./pip3.9 /usr/bin/pip3

パッケージ一覧
# python -m pip list

通った。
パッケージアップデート。
# python -m pip list -o
# python -m pip install -U pip
# python -m pip install -U psycopg requests setuptools urllib3

ここでシンボリックリンク再確認。
# ll ./pip*

lrwxrwxrwx 1 root root   8 Sep 21 06:36 ./pip-3.9 -> ./pip3.9
-rwxr-xr-x 1 root root 650 Sep 21 06:36 ./pip3.9

さっき作ったシンボリックリンクがなくなっていた。
でもパッケージ一覧でエラーは出ない。
pip 22.3.1にアップデートしたときに自動で削除されたんだと思う。
# which pip
# which pip3

/usr/local/bin/pip3

# ll /usr/local/bin/pip*



【関連記事】