zoukankan      html  css  js  c++  java
  • 使用easy_install进行模块/包管理

    使用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为例:

    复制代码
    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)
    复制代码

    从文件信息中,可以发现目前已经安装的模块/包,以及相关的版本信息。

        四、卸载模块/包

        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 总是解压。

        希望本文对大家有所帮助^_^

      

      

     
     
     
  • 相关阅读:
    HDU 3416
    The connection to adb is down, and a severe error has occured
    HDU 2255 奔小康赚大钱 KM裸题
    springMVC --@RequestParam注解(后台控制器获取參数)
    面试宝典之预处理、const与sizeof
    oracle中字符串类似度函数实測
    Android学习之路
    007_尚学堂_高明鑫_android 之项目的打包apk与apk的反编译
    提高eclipse使用效率(二)—— 提高Android开发效率的小技巧
    提高eclipse使用效率(一)--使用快捷键
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3181125.html
Copyright © 2011-2022 走看看