多版本Python安裝pip及pip版本管理


有時候電腦或服務器里需要安裝多個版本的Python,比如Python2.7、Python3.5、Python3.6。同時存在多個版本的Python,如何安裝對應的pip成為一個頭疼的問題,本文從原理入手,詳解如何安裝對應Python版本的pip,當然也適合單一版本Python的pip的安裝。

本文所用系統環境:Ubuntu16。

pip,說到底只是Python的一個包,平時我們安裝Python包都是用pip安裝的,那么pip怎么安裝?最簡單的方法,可以使用下面命令:

sudo apt-get install python-pip

sudo apt-get install python3-pip

那么如果要為Python3.5和Python3.6同時安裝pip這種方法就不行了,網上有很多方法,小編也是看的頭暈眼花,那么下面小編介紹一種方法來從根本上解決多版本Python安裝對應pip的問題,以及對pip對應Python版本進行管理。

第一步,安裝pip包

上面說了,pip說到底就是Python的一個包。所以首先我們就要先安裝這個包,用下面兩行命令來安裝:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

如果你要為Python3.6安裝pip,就把上面第二行命令換成:

python3.6 get-pip.py

同理,為Python3.5安裝則換成相應版本。然后查看一下是否安裝成功:

pip -V

顯示下面說明安裝成功。

pip 10.0.1 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)

其實到這已經成功安裝指定版本Python對應的pip,如果只為安裝pip則下一步可以不看。

第二步,管理pip對應的Python版本

我們發現,每次安裝pip,它都會把默認pip對應的Python修改,導致pip對應版本混亂。首先用下面命令查看pip對應的Python版本:

pip -V
pip2 -V
pip3 -V

可能pip對應的是Python3.6,pip3對應的也是Python3.6。如果想讓pip對應Python2.7,pip3對應Python3.5怎么辦呢?

轉到下面目錄:

cd /usr/local/bin

然后ls一下可能會發現好多pip文件,比如pip、pip2、pip2.7、pip3、pip3.5等等。使用一下命令:

file pip

輸出:pip: Python script, ASCII text executable。發現pip其實是個Python腳本。於是我們用vim打開它:

#!/usr/bin/python3.6 # -*- coding: utf-8 -*- import re import sys from pip._internal import main if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) sys.exit(main())

看第一行,第一行指定了這個腳本對應的python版本,如果想把pip對應的python版本改為2.7的,只需修改python3.6為python2.7即可。修改保存后執行:

pip -V

若出現下面提示

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 7, in <module>
    from pip._internal import main
ImportError: No module named _internal

則說明修改后的python(上文修改的為python2.7)沒有安裝pip包,使用第一步的方法安裝pip包即可。

同理,如果想新建一個,比如新建一個pip3.6,touch pip3.6,然后把上面內容粘進去即可,其它版本也同理,最后別忘了為新建的文件加上可執行權限。

但是,不同版本pip對應的這個腳本文件的內容不同,上面顯示的是pip 10.0版本的,其它版本的腳本文件內容可能與之不同。直接改這個腳本文件來修改pip對應的python版本的前提是:當前腳本文件對應的Python版本與要修改對應的Python版本的pip包版本最好一致,不一致很可能出錯。最簡單的解決辦法是都升級為最新的pip版本。

到此為止,我們可以對pip為所欲為了。

編輯於 2018-05-30
原文地址:https://zhuanlan.zhihu.com/p/37473690


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM