多版本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为所欲为了。
如果这篇文章帮助到了你,你可以请作者喝一杯咖啡