私人定制Python开发环境
Python使用者都知道当前的Python解释器出现了三大分支并驾齐驱的势头。它们分别是Python 2.6.x (最新2.6.9),
Python 2.7.x(最新2.7.5)和Python 3.3.x(最新3.3.3)。而且Python3的最新最重要的分支 Python 3.4马上也发
布。面对如此多Python分支,Python爱好者们怎样选择一个自己合适的解释器呢,或者怎样让多个解释器共存,想用
那个就用那个呢?
Python爱好者们怎样选择一个自己合适的解释器呢?
这个很简单,根据自己项目的需求和对Python2或者Python3的熟悉程度以及所要用到的模块的情况。这个问题不是本
文的重点。
怎样让多个解释器共存,在多个解释器中自由选择?
这个问题可以分成两大部分:
1、安装各个版本的Python解释器
2、建立Python的虚拟运行环境(virtualenv,pip,setuptools)
如图所示:
下面将详细介绍怎样在Ubuntu 12.04.3 LTS上定制Python开发环境。这是我的Ubuntu:
lnxuser@ubuntu:~$lsb_release-a
No LSB modules are available.
Distributor ID:Ubuntu
Description:Ubuntu 12.04.3 LTS
Release:12.04
Codename:precise
众所周知,Ubuntu上的Python包一般都不会是最新的Python版本。而且Ubuntu上默认的Python安装会被系统很多
地方用到。如果我们直接用这个默认安装的Python,然后再装很多我们项目的需要的第三方模块,会让这个默认的
Python安装变得比较混乱。特别地,当因为某些需要,不同的项目需要用同一个模块的不同版本时,使用默认安装
的Python将使你陷入非常困扰的局面。怎么解决呢?用virtualenv定制项目自己的Python环境。
废话少说,我们先来安装自己的Python解释器。为了更方便的使用各个版本Python,我 写了一个pythoninstaller的
安装脚本,用于自动安装想要版本的Python解释器。可以从上获取。
克隆到本地后,像下面方式运行即可:
Usage:
./python_installer.sh
Forexample:
./python_installer.sh3.3.2
安装完毕后,就可以用python来调用python解释器了。例如:
lnxuser@ubuntu:~$ python3.3.3
Python 3.3.3(default,Dec 2 2013,14:17:09)
[GCC 4.6.3]on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
python被安装在了/opt/目录下,请看我的安装的各个版本:
lnxuser@ubuntu:~$ls-dl/opt/python*
drwxr-xr-x 6 root root 4096 Dec 2 14:13/opt/python2.6.9
drwxr-xr-x 6 root root 4096 Nov 4 14:35/opt/python2.7.5
drwxr-xr-x 6 root root 4096 Nov 13 20:22/opt/python2.7.6
drwxr-xr-x 6 root root 4096 Nov 7 10:33/opt/python3.3.2
drwxr-xr-x 6 root root 4096 Dec 2 14:18/opt/python3.3.3
lnxuser@ubuntu:~$ls-l/usr/local/bin/python*
lrwxrwxrwx 1 root root 30 Dec 2 14:13/usr/local/bin/python2.6.9-> /opt/python2.6.9/bin/python2.6
lrwxrwxrwx 1 root root 30 Nov 4 14:35/usr/local/bin/python2.7.5-> /opt/python2.7.5/bin/python2.7
lrwxrwxrwx 1 root root 30 Nov 13 20:22/usr/local/bin/python2.7.6-> /opt/python2.7.6/bin/python2.7
lrwxrwxrwx 1 root root 30 Nov 7 10:33/usr/local/bin/python3.3.2-> /opt/python3.3.2/bin/python3.3
lrwxrwxrwx 1 root root 30 Dec 2 14:18/usr/local/bin/python3.3.3-> /opt/python3.3.3/bin/python3.3
这样,你想要那个版本的python,直接调用它就可以了。
接下来,我们开始建立自己虚拟python环境,而不是直接用我们安装的,这样我们可以保持各个版本的python安装
都是非常clean的。上面的图已经告诉我们,我们需要用到三个工具,它们分别是virtualenv,pip和setuptools。对
于后面两个,我们完全不用管,只要我们用virtualenv建立python环境后,setuptools和pip会自动被安装。而对于
virtualenv,我们完全没有必要安装,只需要下载源码,然后就地创建python virtual env即可。非常方便。请看:
wget 外链网址已屏蔽
tar zxvf virtualenv-1.10.1.tar.gz
cd virtualenv-1.10.1
python3.3.3 virtualenv.py ~/pyVE/py3.3.3
# |||||||||||||||
# 这是我的python3.3.3虚拟环境的目录
下面的log出现,证明安装成功
Using base prefix '/opt/python3.3.3'
New python executable in /home/lnxuser/pyVE/py3.3.3/bin/python3.3.3
Also creating executable in /home/lnxuser/pyVE/py3.3.3/bin/python
Installing Setuptools..............................................................................................................................................................................................................................done.
Installing Pip.....................................................................................................................................................................................................................................................................................................................................done.
此时,为了方便调用,我们再创建两个符号链接
$ sudo ln-s~/pyVE/py3.3.3/bin/python/usr/local/bin/pyve3.3.3# 注意,由于安装的python的解释器使用的是python3.3.3这个名字,所以虚拟环境的#解释器的名字不能再用python3.3.3,可以自己命名一个自己喜欢的名字即可。
$ sudo ln-s~/pyVE/py3.3.3/bin/pip/usr/local/bin/pip_pyve3.3.3 #
至此,python3.3.3的一个定制环境已经创建完毕。
lnxuser@ubuntu:~$pip_pyve3.3.3 list
pip(1.4.1)
setuptools(0.9.8)
可以看到pip和setuptools已经安装了,有了这两个工具,我们就可以随意的增减第三方包了。
例如:我们先升级一下setuptools
lnxuser@ubuntu:~$pip_pyve3.3.3 install setuptools--upgrade
Downloading/unpacking setuptoolsfromhttps://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#md5=13951be6711438073fbe50843e7f141f
Downloading setuptools-1.4.2.tar.gz(796kB):796kB downloaded
Running setup.py egg_infoforpackage setuptools
Installing collected packages:setuptools
Found existing installation:setuptools 0.9.8
Uninstalling setuptools:
Successfully uninstalled setuptools
Running setup.py installforsetuptools
Installing easy_install-3.3 script to/home/lnxuser/pyVE/py3.3.3/bin
Installing easy_install script to/home/lnxuser/pyVE/py3.3.3/bin
Successfully installed setuptools
Cleaning up...
作为一个例子,我们再安装mongodb的python模块
lnxuser@ubuntu:~$pip_pyve3.3.3 install pymongo
Downloading/unpacking pymongo
Downloading pymongo-2.6.3.tar.gz(324kB):324kB downloaded
Running setup.py egg_infoforpackage pymongo
Installing collected packages:pymongo
Running setup.py installforpymongo
.......
.......
我们再来看看刚刚升级和安装的模块
lnxuser@ubuntu:~$pip_pyve3.3.3 list
pip(1.4.1)
pymongo(2.6.3)
setuptools(1.4.2)
setuptools已经从0.9.8升级到了1.4.2。pymongo也安装成功了。
lnxuser@ubuntu:~$ pyve3.3.3
Python 3.3.3 (default, Dec 2 2013, 14:17:09)
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymongo
>>> pymongo.version
'2.6.3'
所有的用户自己安装的第三方库都被放在了虚拟环境里。例如:
lnxuser@ubuntu:~$ ls -l pyVE/py3.3.3/lib/python3.3/site-packages/
total 144
drwxrwxr-x 3 lnxuser lnxuser 4096 Dec 2 21:13 bson
-rw-rw-r-- 1 lnxuser lnxuser 126 Dec 2 21:06 easy_install.py
drwxrwxr-x 3 lnxuser lnxuser 4096 Dec 2 21:13 gridfs
drwxrwxr-x 3 lnxuser lnxuser 4096 Dec 2 21:06 _markerlib
drwxrwxr-x 7 lnxuser lnxuser 4096 Dec 2 20:47 pip
drwxrwxr-x 2 lnxuser lnxuser 4096 Dec 2 20:47 pip-1.4.1-py3.3.egg-info
-rw-rw-r-- 1 lnxuser lnxuser 101430 Dec 2 21:06 pkg_resources.py
drwxrwxr-x 2 lnxuser lnxuser 4096 Dec 2 21:06 __pycache__
drwxrwxr-x 3 lnxuser lnxuser 4096 Dec 2 21:13 pymongo
drwxrwxr-x 2 lnxuser lnxuser 4096 Dec 2 21:13 pymongo-2.6.3-py3.3.egg-info
drwxrwxr-x 6 lnxuser lnxuser 4096 Dec 2 21:06 setuptools
drwxrwxr-x 2 lnxuser lnxuser 4096 Dec 2 21:06 setuptools-1.4.2-py3.3.egg-info
而原始的python安装是非常干净的,只有标准库
lnxuser@ubuntu:~$ ls -l /opt/python3.3.3/lib/python3.3/site-packages/
total 4
-rw-r--r-- 1 root root 119 Dec 2 14:18 README
根据上述的方法,我们可无限制的创建python虚拟环境。可以根据自己的项目情况来创建,各个python的
虚拟环境都是独立的,它们之间不会互相影响。