Python札记 -- 使用easy_install进行模块/包管理
今天在阅读以前项目代码时,发现里面使用的第三方模块的参数相当诡异,总是对不上。经过分析之后,发现是自己安装的第三方模块跟项目使用的版本不一致。在Python中进行模块/包管理的话,就不得不提到easy_install了,它的好处,“谁用谁知道”啊!!!
一、安装easy_install
请各位到 http://pypi.python.org/pypi/setuptools 选择适合自己的安装包,我选择的是setuptools 0.6c11,另外竹风使用的是64位的Python,所以下载了 ez_setup.py 自行安装。文档里说得很清楚。安装完成后,easy_install 会被添加进环境变量中。比如在竹风的 CentOS 上,可以直接在命令行输入 "easy_install -h" 来查看相关帮助了。
二、使用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了。
三、easy_install内部如何管理
easy_install对于第三方模块/包的安装路径,默认是Python的 site-packages ,比如竹风的是 /usr/lib/python2.6/site-packages 。大家可以在该目录下找到 easy-install.pth 文件。该文件里面记录了使用easy_install安装的模块/包。而且能从这个文件中判断出当前使用的模块/包的版本。以竹风的easy-install.pth为例:
$ cat easy-install.pth
import sys; sys.__plen = len(sys.path)
./setuptools-0.6c11-py2.6.egg
./configobj-4.7.2-py2.6.egg
./redis-2.7.2-py2.6.egg
./tornado-2.2.1-py2.6.egg
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)
从文件信息中,可以发现目前已经安装的模块/包,以及相关的版本信息。
四、卸载模块/包
easy_install当然也提供了卸载模块/包的功能。但是必须要注意的是,该模块/包必须要在 easy-install.pth 有相关信息,换句话说,也就是要使用easy_install安装的,才可进行卸载。命令如下: "easy_install -m redis",这样就会将Python中的redis模块卸载。
五、安装的模块/包是egg文件?
在安装第三方模块/包的时候,有可能会发现安装的是一个egg文件,比如“redis-2.7.2-py2.6.egg”。对于好学的程序猿们,想看它的源代码该怎么办呢?相当简单,只需要执行以下unzip就可以了,"unzip redis-2.7.2-py2.6.egg"就可以把源代码解出来。
六、easy_install的其他参数
本文篇幅有限,并不能对easy_install的所有参数进行一一介绍。对照下图,大家可以自行琢磨其他参数的使用方法:
比较值得一提的是 “-d” 参数,可以指定安装目录。这个对于测试是很方便的。比如可以新建一个tmp目录,在里面安装一些模块/包进行测试(此时在tmp目录中也会生成一个easy_install.pth文件,个人推测easy_install在运行时会将所有的pth文件够过一次)。当测试完毕后,只需要将tmp目录删除。
当然还有 "-z" 和 "-Z",总是打包成zip文件 or 总是解压。
希望本文对大家有所帮助^_^
Python札记 -- 使用easy_install进行模块/包管理的更多相关文章
- 使用easy_install进行模块/包管理
使用easy_install进行模块/包管理 今天在阅读以前项目代码时,发现里面使用的第三方模块的参数相当诡异,总是对不上.经过分析之后,发现是自己安装的第三方模块跟项目使用的版本不一致.在Pytho ...
- Python的支持工具[0] -> 环境包管理工具[0] -> pip
pip包管理工具 / pip Package Management Tools pip是一个Python包管理工具,主要是用于安装PyPI上的软件包,可以替代easy_install工具. 1 pip ...
- [Python]import使用的疑难杂症与包管理
概念:模块与包 模块module:一般是以.py为后缀的文件,也包括.pyo..pyc..pyd..so和.dll后缀的文件,模块内定义了函数.类以及变量 包package:包是含有若干个模块的文件夹 ...
- Python的支持工具[0] -> 环境包管理工具[1] -> Anaconda
Anaconda包管理工具 / Anaconda Package Management Tools Anaconda is the world’s most popular Python data s ...
- nodejs,python,sublime和Eclipse的包管理器
Python的包管理器叫pip. 首先安装Python运行环境Python 3.7.0:https://www.python.org/downloads/release/python-370/ Pyt ...
- Python学习笔记5:模块/包
1.模块 模块简单理解就是一组功能的集合. 在Python中,一个文件(.py)就是一个模块,文件名即模块名. 模块的好处是大大提高代码的可维护性,其次,代码不必从零开始.当一个模块编写完毕,就可以被 ...
- python文件打包格式,pip包管理
1..whl是python文件的一种打包格式, 在有些情况下,可以将文件的后缀名改为.zip并解压 2.cmd中,提示pip版本太低,先升级pip pip install --upgrade pi ...
- Python学习(六)模块 —— 包
Python 包 包 定义 为了组织好模块,会将多个模块分为包.Python 处理包也是相当方便的.简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件. 常见的包结构如下:
- Python 入门基础18 --re模块+内存管理
今日内容: 1.垃圾回收机制 2.re模块 一.垃圾回收机制 在计算机中,不能被程序访问到的数,称之为垃圾 1.1 引用计数 引用计数用来记录值的内存地址被记录的次数 每引用一次就对标记 +1 操作 ...
随机推荐
- 模拟器报Installation error: INSTALL_FAILED_CONTAINER_ERROR解决方法
今天刚刚导入了一个项目,但是多次导入,始终有错误,解决不了.第一次是我导入项目之后,项目前边有红色叉号,但是项目里面却没有错误标志.重新打开Eclipse,方解决了这个问题.但是,在模拟器上运行,却始 ...
- discuz!安装遇到问题的解决方案
正常的安装步骤好多地方都有写过了,我安装的时候遇到问题百度翻了个遍也没有找到,现在问题已经解决了,发出了分享一下! 进入第三步创建数据库的时候提示:由于目标计算机积极拒绝,无法连接. 打开phpmya ...
- Objective-C 变量和基本的数据类型
转自:http://blog.csdn.net/mengxiangyue/article/details/11369679 OC中有如下基本数据类型: int:声明整型变量 double:声明双精度变 ...
- 关于delphi点击webbrowser中任意一点的问题
关于delphi点击webbrowser中任意一点的问题 有时候我们需要delphi载入webbrowser1打开网页的时候 需要点击某一个点的位置 可能是坐标 可能是按钮 可能是其他的控件应该如何来 ...
- 内核对TCP REUSEPORT的优化
Q&A 当有人问起我关于reuseport的一些事的时候,我们的对话基本如下:Q1:什么是reuseport?A1:reuseport是一种套接字复用机制,它允许你将多个套接字bind在同一个 ...
- H5学习系列之文件读取API--本文转自http://blog.csdn.net/jackfrued/article/details/8967667
HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型. FileReader的使用方式非常简 ...
- XE3随笔15:使用 IXMLHTTPRequest 简单获取网页源代码
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- Spring RestTemplate: 比httpClient更优雅的Restful URL访问, java HttpPost with header
{ "Author": "tomcat and jerry", "url":"http://www.cnblogs.com/tom ...
- Java 中英文数字排序
//网上找的一个例子自己修改了下分享下,可以传多个排序字段数组 public class SortList<E>{ public static Logger loger = LoggerF ...
- MG--滚动的视觉差效果
#几句代码完成tableView滚动的视觉差 - 效果图 (失帧严重)![](http://upload-images.jianshu.io/upload_images/1429890-f2c8577 ...