【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來查看版本。