在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)为例,记录整个流程。
$ 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的安装就不赘述了。
$ 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了~
转载请注明出处: http://blog.guoyb.com/2016/07/22/virtualenv-trick/
欢迎使用微信扫描下方二维码,关注我的微信公众号TechTalking,技术·生活·思考: