【Python基础】08、Python模

一、python模块

1、python文件

 可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块

     模块在物理形势上表现为以.py结尾的代码文件

              一个文件被看作一个独立的模块,一个模块也可以被看作是一个文件

            模块的文件名就是模块的名字加上扩展名(.py)

            每个模块都有自己的名称空间

      python允许导入其它模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统

            python中,模块也是对象

            在一个模块的顶层定义的所有变量都在被导入时成为了被导入模块的属性

2、python程序架构 

一个Python程序通常包含一个顶层程序文件和其它的模块文件(0个,1个或多个)

        顶层文件:包含了程序的主要控制流程    

        模块文件:为顶层文件或其它模块提供各种功能性组件

               模块首次导入(或重载)时,python会立即执行模块文件的顶层程序代码(不在函数内的代码),而位于函数主体内的代码直到函数被调用后才会执行      

3、模块的执行环境

    模块是被导入的,但模块也可以导入和使用其它模块,这些模块可以用python或其它编程语言写成

    模块可内含变量,函数以及类来进行其工作,而函数和类可以包含变量和其它元素

4、导入模块

     在导入模块时只能使用模块名,而不能使用带.py后缀的模块文件名

 import语句:

      导入指定的整个模块,包括生成一个以模块名命名的名称空间

import module1[,module2…]

         建议一个import语句只导入一个模块

import module(原模块名) as module_alias(自定义模块名)

from-import语句:

常用于只导入指定模块的部分属性至当前名称空间

from module import name1[,name2…]

import和from-import是赋值语句

      import和from是可执行语句,类似于def,因此,他们可以嵌套在if测试中,出现于def中等等

python执行到这些语句时才会对其解析,这意味着,所有来自模块的属性仅在import执行后才能使用

import和from都是隐性赋值语句

      import将整个模块对象赋值给一个变量名

      from将一个或多个变量名赋值给导入此模块的模块中同名对象

模块就是名称空间

       模块的名称空间可以通过属性__dict__或dir(M)来获取

              模块属性可通过点号(.)运算符获取,格式为M.attr

       模块是一个独立的作用域(本地变量就是全局变量)

5、import的工作机制

import语句导入指定的模块时会执行三个步骤:

找到模块文件

      在指定的路径下搜索模块文件

编译成字节码

文件导入时就会编译,因此,顶层文件的.pyc字节码文件在内部使用后会被丢弃,只有被导入的文件才会留下.pyc文件

执行模块的代码来创建其所定义的对象

       模块文件中的所有语句会依次执行,从头至尾,而此步骤中任何对变量的赋值运算,都会产生所得到的模块文件的属性

注意:

 模块只在第一次导入时才会执行如上步骤:

              后续的导入操作只不过是提取内存中已加载的模块对象

              reload()可用于重新加载模块

6、模块搜索

python解释器在import模块时必须先找到对应的模块文件:

      程序的主目录

      PYTHONPATH(变量)目录(如果设置了此目录)

      标准链接库目录

      任何.pth文件的内容(如果存在.pth文件)

       这四个组件组合起来即为sys.path所包含的路径,而Python会选择在搜索路径综合中的第一个符合导入文件名的文件

In [12]: import sys    In [13]: sys.path  Out[13]:     ['',                                #依次按以下路径查找   '/usr/local/python27/bin',   '/usr/local/python27/lib/python27.zip',   '/usr/local/python27/lib/python2.7',   '/usr/local/python27/lib/python2.7/plat-linux2',   '/usr/local/python27/lib/python2.7/lib-tk',   '/usr/local/python27/lib/python2.7/lib-old',   '/usr/local/python27/lib/python2.7/lib-dynload',   '/usr/local/python27/lib/python2.7/site-packages',   #第三方模块一般安装在这各目录下   '/usr/local/python27/lib/python2.7/site-packages/IPython/extensions']

示例:创建一个模块并导入

[root@Node3 ~]# cd /usr/local/python27/lib/python2.7/site-packages/  [root@Node3 site-packages]# vi mymod.py    [root@Node3 site-packages]# cat mymod.py  #!/usr/local/bin/python2.7  #  x=30  def printInof():      print x+30  class MyClass():      data='Hello Myclass'      def __init__(self,who):          self.name=who      def printName(self):          print self.data,self.name  [root@Node3 site-packages]# chmod +x mymod.py   [root@Node3 site-packages]# ls  IPython  ipython-1.2.1-py2.7.egg-info  mymod.py  mymod.pyc  README   #.pyc是模块被导入后生成的字节码文件      In [27]: import mymod    In [28]: mymod.  mymod.MyClass    mymod.printInof  mymod.x       In [45]: mymod.x  Out[45]: 30    In [46]: mymod.printInof  Out[46]: <function mymod.printInof>    In [47]: mymod.printInof()  60    In [48]: Ins1=mymod.MyClass()  ---------------------------------------------------------------------------  TypeError                                 Traceback (most recent call last)  <ipython-input-48-997c65c8235f> in <module>()  ----> 1 Ins1=mymod.MyClass()    TypeError: __init__() takes exactly 2 arguments (1 given)    In [49]: Ins1=mymod.MyClass('xj')    In [50]: mymod.  mymod.MyClass    mymod.printInof  mymod.x              In [50]: Ins1.  Ins1.data       Ins1.name       Ins1.printName      In [50]: Ins1.data  Out[50]: 'Hello Myclass'    In [51]: Ins1.name  Out[51]: 'xj'    In [52]: Ins1.printName  Out[52]: <bound method MyClass.printName of <mymod.MyClass instance at 0x2a01488>>    In [53]: Ins1.printName()  Hello Myclass xj

7、模块的顶层执行及被导入

一个模块文件可以同时支持顶层执行(作为顶层文件)或被导入(作为模块文件)

每个模块都有个名为__name__的内置属性,python会自动设置该属性

               如果文件是以顶层执行文件执行,在启动时,__name__的值为“__main__”

               如果是被导入,则__name__的值为模块名

可以在模块中检测自己的__name__属性,以之实现在执行时运行指定的代码

In [65]: mymod.__name__  Out[65]: 'mymod'    In [66]: os.__name__  Out[66]: 'os'

常用于模块的自我测试:

#!/usr/local/bin/python2.7  #  def testFunc():      print "Hello,there..."  if __name__=="__main__":      testFunc()

将原mymod模块做修改并测试:

[root@Node3 site-packages]# cat mymod.py  #!/usr/local/bin/python2.7  #  x=30  def printInof():      print x+30  class MyClass():      data='Hello Myclass'      def __init__(self,who):          self.name=who      def printName(self):          print self.data,self.name  if __name__ == '__main__':      printInof()      ins1=MyClass('jerry')      print x      ins1.printName()  [root@Node3 site-packages]# ./mymod.py   60  30  Hello Myclass jerry

二、python包

1、python包

包用于将一组模块归并到一个目录中,此目录即为包,目录名为包名

      包是一个有层次的文件目录结构,它定义了一个由模块和子包组成的python应用程序执行环境

      基于包,python在执行模块导入时可以指定模块的导入路径

import dir1.dir2.mod1

要使用如图所示的package1,则py_pkg_mod容器必须要在模块搜索路径中

import package1.mod1

包导入语句的路径内的每个目录内都必须有__init__.py文件

       __init__.py可包含python代码,但通常为空,仅用于扮演包初始化的挂钩,替目录产生模块命名空间以及使用目录导入时实现from *行为的角色

                                     package1          __init__.py,mod1.py

   py_pkg_mod             package2          __init__.py,mod2.py

                                     package3          __init__.py,mod3.py

示例:创建一个包

[root@Node3 site-packages]# mkdir pkg1  [root@Node3 site-packages]# cd pkg1           [root@Node3 pkg1]# touch __init__.py  [root@Node3 pkg1]# cp ../mymod.py yanmod.py

此时pkg1就是一个包名,yanmod是pkg1包内的一个模块        #可以在pkg1包内创建多各模块

导入包里的模块:

In [9]: import yanmod  ---------------------------------------------------------------------------  ImportError                               Traceback (most recent call last)  <ipython-input-9-a057ff9c6d92> in <module>()  ----> 1 import yanmod    ImportError: No module named yanmod    In [10]: import pkg1.yanmod    In [11]: pkg1.yanmod.  pkg1.yanmod.MyClass    pkg1.yanmod.printInof  pkg1.yanmod.x              In [11]: pkg1.yanmod.x  Out[11]: 33    In [12]: pkg1.yanmod.printInof  Out[12]: <function pkg1.yanmod.printInof>    In [13]: pkg1.yanmod.printInof()  63

2、发布Python模块或程序

pyhon模块、扩展和应用程序可以按一下几种形式进行打包和发布

     压缩文件

            windows的zip文件和类Unix平台的.tar.gz文件

     自动解包或自动安装可执行文件

            windows中的.exe文件

     自包含的,不要求安装的预备运行可执行程序

            windows的.exe文件、unix上带有一个小的脚本前缀的ZIP压缩文件、MAC上的.app文件等

     平台相关的安装程序

            windowns上的.msi文件,linux上常见的.rpm,src.rpm 和.deb文件等

      python eggs 

             较流行的第三方扩展

3、使用distutils模块能够帮助完成模块或程序发布

     “发布”是指一个文件集合,这些文件联合可使用distutils构建,打包和发布模块

        创建好的发布可以用于安装,也可以上传到PyPI上与他人共享

发布模块的步骤:

1)创建发布

将各代码文件组织到模块容器中

       准备一个README或README.txt文件

       而后在容器中创建setup.py文件

setup.py中的常用参数:

       将各代码文件组织到模块容器中,而后在容器中创建setup.py文件

      参数                          描述

    name                    包的名称(必须)

    version                  版本号(必须)

    authoer                 作者名称

    authoer_email

    maintainer            维护者

    url                         包的主页

    description            包的简短描述

    long_description    包的详细描述

    download_url         包的下载位置

    Classifiers              字符串分类器列表   

    platforms              适用的平台列表

    license                    许可证

    py_modules          各模块名称组成的列表,此些模块可能位于包的跟目录下,也可能位于子包目录中

    packages               各自包名称的列表

大体可分为两类:元数据信息和包中的内容列表

2)完成打包:在要发布的容器目录中执行“python setup.py sdist"命令

可以指定格式:–formats=

zip: zip file

gztar:tar.gz file

bztar:tar.bz2 file

ztar:tar.Z file

tar:tar file

python setup.py bdist    (二进制发行版)

为bdist指定格式:–formats=

gztar:tar.gz file

ztar:tar.Z file

tar:tar file

zip:zip file

rpm:RPM Package

pkgtool:Solaris pkgtool

winist:Windows上自解压的zip格式的包

msi:microsoft installer

bdist_dump

bdist_rpm

bdist_winist

bdist_msi

获取帮助的方式:

python setup.py –help

python setup.py –help-commands    所有可以使用的命令,如build,install,sdist,bdist

python setup.py COMMAND –help   获取特定命令的帮助

python setup.py COMMAND 

python setup.py COMMAND –help-formats  获取特定命令支持使用的格式

示例:发布pkg1包

[root@Node3 pkg1]# touch README       #应该在README文件中写明安装方法,注意事项什么的  [root@Node3 pkg1]# vi setup.py      [root@Node3 pkg1]# cat setup.py   from distutils.core import setup  setup(      name          ='pkg1',      version       ='0.0.1',      author        ='anyfish',      author_email  ='[email protected]'      py_modules    =['yanmod'],      description   ='A simple module.',      long_description ='ANYFISH A simple module'      )  [root@Node3 pkg1]# ls  __init__.py  __init__.pyc  README  setup.py  yanmod.py  yanmod.pyc    [root@Node3 pkg1]# /usr/local/bin/python2.7 setup.py sdist  running sdist  running check  warning: check: missing required meta-data: url    warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)    writing manifest file 'MANIFEST'  creating pkg1-0.0.1  making hard links in pkg1-0.0.1...  hard linking README -> pkg1-0.0.1  hard linking setup.py -> pkg1-0.0.1  creating dist  Creating tar archive  removing 'pkg1-0.0.1' (and everything under it)  [root@Node3 pkg1]# ls  dist  __init__.py  __init__.pyc  MANIFEST  README  setup.py  yanmod.py  [root@Node3 pkg1]# ls dist  pkg1-0.0.1.tar.gz          #默认的格式,这个模块就打包好了,可以发给别人使用了          [root@Node3 pkg1]# /usr/local/bin/python2.7 setup.py sdist --help-formats  List of available source distribution formats:    --formats=bztar  bzip2'ed tar-file    --formats=gztar  gzip'ed tar-file    --formats=tar    uncompressed tar file    --formats=zip    ZIP file    --formats=ztar   compressed tar file        [root@Node3 pkg1]# /usr/local/bin/python2.7 setup.py bdist --help-formats  List of available distribution formats:    --formats=rpm      RPM distribution    --formats=gztar    gzip'ed tar file    --formats=bztar    bzip2'ed tar file    --formats=ztar     compressed tar file    --formats=tar      tar file    --formats=wininst  Windows executable installer    --formats=zip      ZIP file    --formats=msi      Microsoft Installer

三、python包管理工具

        对于每个编程语言来说打包和发布开发包往往非常重要,而作为一个编程者能够快速容易的获得并应用这些由第三方提供的包同样非常重要。类似于java为了便于管理有人开发了maven等管理工作,而python自然而然也需要便捷的打包和发布工具,以下就介绍python的几个包管理方式。

       python包管理工具有distutils,setuptools,distribute,easy_install,pip,那麽这几个工具有什么关系呢?

1、distutils

Python自带的基本安装工具, 适用于非常简单的应用场景使用

      通过distutils来打包,生成安装包,安装python包等工作,需要编写名为setup.py python脚本文件。如下代码:

from distutils.core import setup    setup(         name = "testpackage",           version = "1.0",          description = "Distutils sample distribution testpackage",          packages = ['TestPackage']  )

通过上述代码可以进行打包或生成安装包文件,并能进行安装

打包:python setup.py sdist

安装:python setup.py install

       install之前会自动先进行build,默认会在当前工作目录下生成build目录,指定build目录参数:

 –build-base=/path/to/build_dir

第三方模块的默认安装路径通常为:/usr/local/python27/lib/python2.7/site-packages

install 自定义安装路径:

       –user=                            #安装到用户家目录的指定目录下

       –prefix=                          #指定安装到某路径          python库文件

       –exec-prefix=                 #指定用于和python无关由其它语言实现的和平台相已经编译好的的特定文件安装路径

深度定制:

       –install-purelib=/path/to/python_lib    #纯python库文件

       –install-platlib=/path/to/plat_lib          #和python无关由其它语言实现的和平台相已经编译好的的文件

       –install-lib=/path/to/lib                   #不加区分python库文件和其它语言实现的,安装在一起

       –install-scripts=/path/to/bin           #可执行文件安装路径

       –install-data=                                  #数据文件

       –install-headers=                            #c头文件

打包成windows下安装文件exe格式(需在windows环境下):python setup.py bdist_wininst

打包成linux下rpm安装文件格式(需在有rpm环境下):python setup.py bdist_rpm

distutils2 

setuptools 和 distribute 的诞生是因为 distutils 的不济, 进而导致目前分化的状况。

它将成为 Python 3.3 的标准库 packaging , 并在其它版本中以distutils2 的身份出现; 换句话说, 它和 pip 将联手结束目前混乱的状况。

2、setuptools 

针对 distutils 做了大量扩展, 尤其是加入了包依赖机制。不支持python3,安装完setuptools后会有easy_install

安装地址:http://pypi.python.org/pypi/setuptools

1)windows:

32位操作系统直接exe安装文件安装

64位操作系统下载名为ez_setup.py的python脚本文件运行,它会自动安装适合的egg文件并帮您安装(当前还不支持64位的exe安装文件安装,由于distutils安装兼容问题)

注意:windows环境并未自己动手验证

2)Linux

python版本支持 

32位系统至少需要python2.3.5或以上版本支持 

64位系统至少需要python2.4或以上版本支持

yum安装:

[root@Node3 ~]# yum install python-setuptools    [root@Node3 ~]# rpm -ql python-setuptools  /usr/bin/easy_install  /usr/bin/easy_install-2.6  /usr/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg-info  /usr/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg-info/PKG-INFO  /usr/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg-info/SOURCES.txt  /usr/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg-info/dependency_links.txt  /usr/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg-info/entry_points.txt  /usr/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg-info/top_level.txt  /usr/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg-info/zip-safe  /usr/lib/python2.6/site-packages/easy_install.py

源码安装:

[root@Node4 ~]# ls  anaconda-ks.cfg  install.log  install.log.syslog  mogilefs  setuptools-28.6.1.tar.gz  [root@Node4 ~]# tar xf setuptools-28.6.1.tar.gz   [root@Node4 ~]# ls  anaconda-ks.cfg  install.log.syslog  setuptools-28.6.1  install.log      mogilefs            setuptools-28.6.1.tar.gz  [root@Node4 ~]# cd setuptools-28.6.1  [root@Node4 setuptools-28.6.1]# ls  bootstrap.py  easy_install.py  msvc-build-launcher.cmd  pytest.ini  setuptools  CHANGES.rst   launcher.c       pavement.py              README.rst  setuptools.egg-info  conftest.py   LICENSE          PKG-INFO                 setup.cfg   tests  docs          MANIFEST.in      pkg_resources            setup.py  [root@Node4 setuptools-28.6.1]# python setup.py install  running install  running bdist_egg  running egg_info  .  .  .  creating dist  creating 'dist/setuptools-28.6.1-py2.6.egg' and adding 'build/bdist.linux-x86_64/egg' to it  removing 'build/bdist.linux-x86_64/egg' (and everything under it)  Processing setuptools-28.6.1-py2.6.egg  Copying setuptools-28.6.1-py2.6.egg to /usr/lib/python2.6/site-packages  Adding setuptools 28.6.1 to easy-install.pth file  Installing easy_install script to /usr/bin  Installing easy_install-2.6 script to /usr/bin    Installed /usr/lib/python2.6/site-packages/setuptools-28.6.1-py2.6.egg  Processing dependencies for setuptools==28.6.1  Finished processing dependencies for setuptools==28.6.1

3、distribute

类似于setuptools,支持python3,安装完distribute后会有easy_install

Distribute被创建是因为Setuptools包不再维护了。

安装distribute:

[root@Node3 ~]# ls  anaconda-ks.cfg       install.log         ipython-1.2.1.tar.gz  Python-2.7.6.tar.xz  test.sh  dev1                  install.log.syslog  mogilefs              src  distribute-0.7.3.zip  ipython-1.2.1       Python-2.7.6          test  [root@Node3 ~]# unzip distribute-0.7.3.zip     [root@Node3 ~]# ls  anaconda-ks.cfg   distribute-0.7.3.zip  ipython-1.2.1         Python-2.7.6         test  dev1              install.log           ipython-1.2.1.tar.gz  Python-2.7.6.tar.xz  test.sh  distribute-0.7.3  install.log.syslog    mogilefs              src  [root@Node3 ~]# cd distribute-0.7.3  [root@Node3 distribute-0.7.3]# ls  distribute.egg-info  PKG-INFO          setup.cfg  setuptools  MANIFEST.in          pkg_resources.py  setup.py   setuptools.egg-info  [root@Node3 distribute-0.7.3]# /usr/local/bin/python2.7 setup.py install  running install  running bdist_egg  running egg_info      Installed /usr/local/python27/lib/python2.7/site-packages/distribute-0.7.3-py2.7.egg  Processing dependencies for distribute==0.7.3  Searching for setuptools==0.8b2  Best match: setuptools 0.8b2  Adding setuptools 0.8b2 to easy-install.pth file  Installing easy_install script to /usr/local/python27/bin  Installing easy_install-2.7 script to /usr/local/python27/bin    Using /root/distribute-0.7.3  Finished processing dependencies for distribute==0.7.3

4、easy_install 

setuptools 和 distribute自带的安装脚本, 也就是一旦setuptools或distribute安装完毕, easy_install 也便可用了。

easy_install 最大的特点是自动查找Python官方维护的包源 PyPI , 安装第三方Python包非常方便。

文档:http://peak.telecommunity.com/DevCenter/EasyInstall

      pip可正常工作在Windows、Mac OS、Unix/Linux等上,但是需要至少2.6+和3.2+的CPython或PyPy的支持。python 2.7.9 和3.4以后的版本已经内置累pip程序,所以不需要安装。

easy_install的用法:

安装一个包:

easy_install 包名
easy_install "包名 == 包的版本号"

升级一个包:

easy_install -U "包名 >= 包的版本号"

easy_install –help                 来查看命令详情

[root@Node3 ~]# /usr/local/python27/bin/easy_install --help    Global options:    --verbose (-v)  run verbosely (default)    --quiet (-q)    run quietly (turns verbosity off)    --dry-run (-n)  don't actually do anything    --help (-h)     show detailed help message    --no-user-cfg   ignore pydistutils.cfg in your home directory    Options for 'easy_install' command:    --prefix                       installation prefix    --zip-ok (-z)                  install package as a zipfile    --multi-version (-m)           make apps have to require() a version    --upgrade (-U)                 force upgrade (searches PyPI for latest                                   versions)    --install-dir (-d)             install package to DIR    --script-dir (-s)              install scripts to DIR    --exclude-scripts (-x)         Don't install scripts    --always-copy (-a)             Copy all needed packages to install dir    --index-url (-i)               base URL of Python Package Index    --find-links (-f)              additional URL(s) to search for packages    --delete-conflicting (-D)      no longer needed; don't use this    --ignore-conflicts-at-my-risk  no longer needed; don't use this    --build-directory (-b)         download/extract/build in DIR; keep the                                   results    --optimize (-O)                also compile with optimization: -O1 for                                   "python -O", -O2 for "python -OO", and -O0 to                                   disable [default: -O0]    --record                       filename in which to record list of installed                                   files    --always-unzip (-Z)            don't install as a zipfile, no matter what    --site-dirs (-S)               list of directories where .pth files work    --editable (-e)                Install specified packages in editable form    --no-deps (-N)                 don't install dependencies    --allow-hosts (-H)             pattern(s) that hostnames must match    --local-snapshots-ok (-l)      allow building eggs from local checkouts    --version                      print version information and exit    --no-find-links                Don't load find-links defined in packages                                   being installed    --user                         install in user site-package                                   '/root/.local/lib/python2.7/site-packages'    usage: easy_install [options] requirement_or_url ...     or: easy_install --help

5、pip

pip的目标是取代easy_install。

easy_install 有很多不足: 安装事务是非原子操作, 只支持 svn, 没有提供卸载命令, 安装一系列包时需要写脚本; pip 解决了以上问题, 已俨然成为新的事实标准, virtualenv 与它已经成为一对好搭档;

安装pip:

Pip的安装可以通过源代码包,easy_install或者脚本

下面介绍一下各种安装方法:

源代码方式:

$ wget http://pypi.python.org/packages/source/p/pip/pip-0.7.2.tar.gz (替换为最新的包)  $ tar xzf pip-0.7.2.tar.gz  $ cd pip-0.7.2  $ python setup.py install

easy_install:

$ easy_install pip

get_pip.py 脚本:

$ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ python get-pip.py
[root@Node3 ~]# /usr/local/python27/bin/easy_install pip  Searching for pip  Reading https://pypi.python.org/simple/pip/  Best match: pip 8.1.2  Downloading https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4a  Processing pip-8.1.2.tar.gz  Writing /tmp/easy_install-FcoZnA/pip-8.1.2/setup.cfg  Running pip-8.1.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-FcoZnA/pip-8.1.2/egg-dist-tmp-0B65k1  warning: no previously-included files found matching '.coveragerc'  warning: no previously-included files found matching '.mailmap'  warning: no previously-included files found matching '.travis.yml'  warning: no previously-included files found matching '.landscape.yml'  warning: no previously-included files found matching 'pip/_vendor/Makefile'  warning: no previously-included files found matching 'tox.ini'  warning: no previously-included files found matching 'dev-requirements.txt'  warning: no previously-included files found matching 'appveyor.yml'  no previously-included directories found matching '.github'  no previously-included directories found matching '.travis'  no previously-included directories found matching 'docs/_build'  no previously-included directories found matching 'contrib'  no previously-included directories found matching 'tasks'  no previously-included directories found matching 'tests'  Adding pip 8.1.2 to easy-install.pth file  Installing pip script to /usr/local/python27/bin  Installing pip2.7 script to /usr/local/python27/bin  Installing pip2 script to /usr/local/python27/bin    Installed /usr/local/python27/lib/python2.7/site-packages/pip-8.1.2-py2.7.egg  Processing dependencies for pip  Finished processing dependencies for pip

pip的使用:

[root@Node3 ~]# /usr/local/python27/bin/pip -v    Usage:       pip <command> [options]    Commands:    install                     Install packages.    download                    Download packages.    uninstall                   Uninstall packages.    freeze                      Output installed packages in requirements format.    list                        List installed packages.    show                        Show information about installed packages.    search                      Search PyPI for packages.    wheel                       Build wheels from your requirements.    hash                        Compute hashes of package archives.    completion                  A helper command used for command completion    help                        Show help for commands.    General Options:    -h, --help                  Show help.    --isolated                  Run pip in an isolated mode, ignoring environment variables and                                user configuration.    -v, --verbose               Give more output. Option is additive, and can be used up to 3                                times.    -V, --version               Show version and exit.    -q, --quiet                 Give less output.    --log <path>                Path to a verbose appending log.    --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.    --retries <retries>         Maximum number of retries each connection should attempt                                (default 5 times).    --timeout <sec>             Set the socket timeout (default 15 seconds).    --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore,                                (w)ipe, (b)ackup.    --trusted-host <hostname>   Mark this host as trusted, even though it does not have valid                                or any HTTPS.    --cert <path>               Path to alternate CA bundle.    --client-cert <path>        Path to SSL client certificate, a single file containing the                                private key and the certificate in PEM format.    --cache-dir <dir>           Store the cache data in <dir>.    --no-cache-dir              Disable the cache.    --disable-pip-version-check                                Don't periodically check PyPI to determine whether a new                                version of pip is available for download. Implied with --no-                                index.

     安装: pip install [PACKAGE_NAME]   

     升级:pip install -U [PACKAGE_NAME]   

     卸载: pip uninstall [PACKAGE_NAME]

     查询包: pip search [PACKAGE_NAME]  

     列出安装的包及其版本:pip freeze

     查看帮助:pip help

     通过使用==, >=, <=, >, <来指定一个版本号

$ pip install 'Markdown<2.0'
$ pip install 'Markdown>2.0,<2.0.3'

下载地址:https://pypi.python.org/pypi/pip 通过python setup.py install来安装,通过pip –version来查看版本。