python和pip的多个版本共存–ubuntu linux

ubuntu linux存在多个不同的python版本,导致pip也存在多套版本。如果再安装virtualenv,对应的python版本和pip版本都会有很多套。

针对多个不同的python版本

ls -l /usr/bin/python*

lrwxrwxrwx 1 root root 9 9月 24 2014 /usr/bin/python -> python2.7 lrwxrwxrwx 1 root root 9 9月 24 2014 /usr/bin/python2 -> python2.7 -rwxr-xr-x 1 root root 3345416 6月 23 02:51 /usr/bin/python2.7 lrwxrwxrwx 1 root root 9 9月 24 2014 /usr/bin/python3 -> python3.4 -rwxr-xr-x 2 root root 4061272 6月 19 23:35 /usr/bin/python3.4 -rwxr-xr-x 2 root root 4061272 6月 19 23:35 /usr/bin/python3.4m lrwxrwxrwx 1 root root 10 9月 24 2014 /usr/bin/python3m -> python3.4m

可以看出: python=python2=python2.7 python3=python3.4 python3m=python3.4m python!=python3

我用的是哪个python?

直接键入python开启的是python2.7 键入python3,开启的是python3.4

同样安装pip到对应的版本,需要使用

python get-pip.py

python3 get-pip.py

这样相应的安装到对应的目录下,而此时有多个pip存在。

针对多个不同的pip版本

ls -l /usr/local/bin/pip*

-rwxr-xr-x 1 root root 205 9月 16 22:34 /usr/local/bin/pip -rwxr-xr-x 1 root root 204 9月 16 22:29 /usr/local/bin/pip2 -rwxr-xr-x 1 root root 204 9月 16 22:29 /usr/local/bin/pip2.7 -rwxr-xr-x 1 root root 205 9月 16 22:34 /usr/local/bin/pip3 -rwxr-xr-x 1 root root 205 9月 16 22:34 /usr/local/bin/pip3.4

由于pip后装在了python3上,所以pip重新对应了python3。可以看出: pip2=pip2.7 pip3=pip3.4 pip=pip2还是pip3取决于安装的先后顺序,这样有了python2.7和3.4,又有了pip2.7和pip3.4。

可以通过下列命令看出差异:

pip2 list

pip3 list

可以看出对应的包不同,再例如

pip2 show pip

结果是: Metadata-Version: 2.0 Name: pip Version: 7.1.2 Summary: The PyPA recommended tool for installing Python packages. Home-page: https://pip.pypa.io/ Author: The pip developers Author-email: python-virtualenv@groups.google.com License: MIT Location: /usr/local/lib/python2.7/dist-packages Requires:

pip3 show pip

结果是: Metadata-Version: 2.0 Name: pip Version: 7.1.2 Summary: The PyPA recommended tool for installing Python packages. Home-page: https://pip.pypa.io/ Author: The pip developers Author-email: python-virtualenv@groups.google.com License: MIT Location: /usr/local/lib/python3.4/dist-packages Requires:

可以看出安装的位置不同。

使用虚拟环境,避免被意外破坏生产环境

sudo pip2 install -U virtualenv

pip2 show virtualenv

Metadata-Version: 2.0 Name: virtualenv Version: 13.1.2 Summary: Virtual Python Environment builder Home-page: https://virtualenv.pypa.io/ Author: Jannis Leidel, Carl Meyer and Brian Rosner Author-email: python-virtualenv@groups.google.com License: MIT Location: /usr/local/lib/python2.7/dist-packages Requires:

再安装python3的虚拟环境:

sudo pip3 install -U virtualenv

pip3 show virtualenv

Metadata-Version: 2.0 Name: virtualenv Version: 13.1.2 Summary: Virtual Python Environment builder Home-page: https://virtualenv.pypa.io/ Author: Jannis Leidel, Carl Meyer and Brian Rosner Author-email: python-virtualenv@groups.google.com License: MIT Location: /usr/local/lib/python3.4/dist-packages Requires:

版本都是13.1.2,位置不同,功能一样。

~/pve$ python2 -m virtualenv -p python2 pve27

Already using interpreter /usr/bin/python2 New python executable in pve27/bin/python2 Also creating executable in pve27/bin/python Installing setuptools, pip, wheel…done.

再看py3:

~/pve$ python3 -m virtualenv -p python3 pve34

Already using interpreter /usr/bin/python3 Using base prefix ‘/usr’ New python executable in pve34/bin/python3 Also creating executable in pve34/bin/python Installing setuptools, pip, wheel…done. ~/pve/pve27/bin$ source activate

再来看一下pip list

pip list

pip (7.1.2) setuptools (18.2) wheel (0.24.0)

而如果加上sudo

sudo pip list

apturl (0.5.2ubuntu4) Brlapi (0.6.1) chardet (2.2.1) checkbox-ng (0.3) checkbox-support (0.2) command-not-found (0.3) defer (1.0.6) ……

这个sudo后面的pip调用的是系统pip(pip3),所以不要加sudo。 虚拟机开启后不需要sudo。

~/pve/pve34/bin$ source activate

然后执行:

pip list

pip (7.1.2) setuptools (18.2) wheel (0.24.0)