【Python基礎】08、Python模
- 2020 年 1 月 6 日
- 筆記
一、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來查看版本。