使用virtualenv管理多个Python版本

Posted SOTON数据分析

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用virtualenv管理多个Python版本相关的知识,希望对你有一定的参考价值。

在Ubuntu14.04上默认安装的Python版本是2.7.6,而且似乎也没有更到2.7.9以上的打算。有时,运行一些模块需要更高版本的Python(比如urllib3的一些功能需要2.7.9以上),这时该怎么办呢?

之前有一次遇到这种情况,我直接wget Python2.7.11的源码编译安装,覆盖了原来的2.7.6的版本。但是这直接导致了原来系统中一些依赖2.7.6版本的模块无法启动。而从源码安装的Python版本回退回系统默认安装的Python版本的过程是极其痛苦的,apt-get purge删不干净,需要手动locate各种Python模块的位置,尤其当系统中还有源码安装的Python3时,简直不堪回首……

最近又遇到了这样的问题,花了一些时间调研了下virtualenv,发现两个参数配合使用,正好可以解决多Python版本的问题。从此,妈妈再也不用担心我搞乱Python环境啦~

下面以在Ubuntu14.04(默认Python2.7.6)上安装Python2.7.9,运行zhihu-terminal(依赖Python2.7.9)为例,记录整个流程。

从源码安装Python

$ wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
$ tar xvf Python-2.7.9.tgz
$ cd Python-2.7.9/
$ ./configure --prefix=/usr/local/lib/$ make
$ sudo make install

这里最重要的一个参数是--prefix=/usr/local/lib/,它确保了新安装的Python版本和系统默认的Python互不影响。

这时,直接运行python,还会显示版本是2.7.6:

$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.>>> 


运行Python2.7.9,需要找到/usr/local/lib/bin/下面的python:

$ /usr/local/lib/bin/python
Python 2.7.9 (default, Jul 22 2016, 17:26:34) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.>>> 


配置virtualenv

virtualenv的安装就不赘述了。

$ cd zhihu-terminal
$ virtualenv -p /usr/local/lib/bin/python .
$ source ./bin/activate
(virtualenv)$ python
Python 2.7.9 (default, Jul 22 2016, 17:29:31) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.>>> 

这里出现了第二个重要的参数 -p /usr/local/lib/bin/python,指定了virtualenv所使用的Python路径。

至此,在当前virtualenv下就可以畅快的使用Python2.7.9,而不用改动系统默认的Python2.7.6了~




以上是关于使用virtualenv管理多个Python版本的主要内容,如果未能解决你的问题,请参考以下文章

python 多环境扩展之virtualenv

pyenv & virtualenv 的安装与使用

mac下Python关于venv 的使用

再见 virtualenv!K神教你轻松管理多个Python环境

在centos中部署多个python版本

[python] virtualenv和virtualenvwrapper管理python虚拟环境