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-3lrwxrwxrwx 1 root root 22 Jul 9 16:02 /usr/bin/pip3 -> /etc/alternatives/pip3lrwxrwxrwx 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.9lrwxrwxrwx 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*