Ubuntu 16.04安裝新版pip和pip3後無法執行(No such file or directory)


在進行pip install時python會建議安裝新版本pip,雖然可以透過pip install pip進行升級就好,但是如果用sudo升級pip會發生pip指令無法使用的狀況。(指令如下)

sudo pip install --upgrade pip
sudo pip3 install --upgrade pip

這是因為原本Ubuntu的pip指令是透過用apt-get安裝,pip在10.0.0版本有做一些改變,所以指令有改動,導致pip自我安裝新版後無法使用pip指令

預設Ubuntu 16.04安裝的pip應該是8.1.1版,用pip -V可顯示版本
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

(2020-03-02 pip,pip3更新到20.0.2)
$ pip3 -V
pip 20.0.2 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)
$ pip -V
pip 20.0.2 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)

解法1. 修改Ubuntu內pip或pip3指令

sudo vim /usr/bin/pip

改寫成
#!/usr/bin/python
# for pip > 10.0.0
import sys
from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

原本Ubuntu原本出問題的pip內容是#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import sys

from pip._internal.cli.main import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])

    sys.exit(main())

解法2. 新增當前使用者pip指令(2020-03-02更新)

如果你升級pip後 執行pip時顯示的是
bash: /home/{USER}/.local/bin/pip: No such file or directory
可以套用此解法

pip

mkdir -p ~/.local/bin
cat >~/.local/bin/pip <<"EOF"
#!/usr/bin/python
# for pip >= 10.0.0 
import sys
from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())
EOF
chmod +x ~/.local/bin/pip

pip3

mkdir -p ~/.local/bin
cat >~/.local/bin/pip3 <<"EOF"
#!/usr/bin/python3
# for pip >= 10.0.0 
import sys
from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())
EOF
chmod +x ~/.local/bin/pip3

留言