今天在阅读之前项目代码时,发现里面使用的第三方模块的参数至关诡异,老是对不上。通过分析以后,发现是本身安装的第三方模块跟项目使用的版本不一致。在Python中进行模块/包管理的话,就不得不提到easy_install了,它的好处,“谁用谁知道”啊!!!python
1、安装easy_installredis
请各位到 http://pypi.python.org/pypi/setuptools 选择适合本身的安装包,我选择的是setuptools 0.6c11,另外竹风使用的是64位的Python,因此下载了 ez_setup.py 自行安装。文档里说得很清楚。安装完成后,easy_install 会被添加进环境变量中。好比在竹风的 CentOS 上,能够直接在命令行输入 "easy_install -h" 来查看相关帮助了。tornado
2、使用easy_install安装第三方模块/包测试
操做至关简单,好比竹风如今想安装 tornado 的话,只须要输入"easy_install torando"便可。
值得注意的是,上面这种状况默认安装的是 https://pypi.python.org/pypi 提供的最新版本,这在某些状况下会引起些没必要要的疑惑。
依旧以tornado为例,pypi 如今提供的版本为3.1,可是竹风阅读的项目使用的是2.2.1,这两个版本之间的差异仍是至关多的。
幸亏 easy_install 提供了安装指定版本的功能,好比"easy_install tornado==2.2.1" 就能安装tornado 2.2.1了。spa
3、easy_install内部如何管理命令行
easy_install对于第三方模块/包的安装路径,默认是Python的 site-packages ,好比竹风的是 /usr/lib/python2.6/site-packages 。你们能够在该目录下找到 easy-install.pth 文件。该文件里面记录了使用easy_install安装的模块/包。并且能从这个文件中判断出当前使用的模块/包的版本。以竹风的easy-install.pth为例:code
1 $ cat easy-install.pth 2 import sys; sys.__plen = len(sys.path) 3 ./setuptools-0.6c11-py2.6.egg 4 ./configobj-4.7.2-py2.6.egg 5 ./redis-2.7.2-py2.6.egg 6 ./tornado-2.2.1-py2.6.egg 7 import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)
从文件信息中,能够发现目前已经安装的模块/包,以及相关的版本信息。blog
4、卸载模块/包ip
easy_install固然也提供了卸载模块/包的功能。可是必需要注意的是,该模块/包必需要在 easy-install.pth 有相关信息,换句话说,也就是要使用easy_install安装的,才可进行卸载。命令以下: "easy_install -m redis",这样就会将Python中的redis模块卸载。文档
5、安装的模块/包是egg文件?
在安装第三方模块/包的时候,有可能会发现安装的是一个egg文件,好比“redis-2.7.2-py2.6.egg”。对于好学的程序猿们,想看它的源代码该怎么办呢?至关简单,只须要执行如下unzip就能够了,"unzip redis-2.7.2-py2.6.egg"就能够把源代码解出来。
6、easy_install的其余参数
本文篇幅有限,并不能对easy_install的全部参数进行一一介绍。对照下图,你们能够自行琢磨其余参数的使用方法:
比较值得一提的是 “-d” 参数,能够指定安装目录。这个对于测试是很方便的。好比能够新建一个tmp目录,在里面安装一些模块/包进行测试(此时在tmp目录中也会生成一个easy_install.pth文件,我的推测easy_install在运行时会将全部的pth文件够过一次)。当测试完毕后,只须要将tmp目录删除。
固然还有 "-z" 和 "-Z",老是打包成zip文件 or 老是解压。
但愿本文对你们有所帮助^_^