Python中的包
包是一個分層次的檔案目錄結構,它定義了一個由模組及子包,和子包下的子包等組成的Python的應用環境。
考慮一個在Phone目錄下的pots.py檔案。這個檔案有如下原始碼:
#!/usr/bin/python# -*- coding: UTF-8 -*- def Pots(): print "I'm Pots Phone"
同樣地,我們有另外兩個儲存了不同函數的檔案:
- Phone/Isdn.py 含有函數Isdn()
- Phone/G3.py 含有函數G3()
現在,在Phone目錄下建立file __init__.py:
Phone/__init__.py
當你匯入Phone時,為了能夠使用所有函數,你需要在__init__.py裡使用顯式的匯入語句,如下:
from Pots import Potsfrom Isdn import Isdnfrom G3 import G3
當你把這些代碼添加到__init__.py之後,匯入Phone包的時候這些類就全都是可用的了。
#!/usr/bin/python# -*- coding: UTF-8 -*- # 匯入 Phone 包import Phone Phone.Pots()Phone.Isdn()Phone.G3()
以上執行個體輸出結果:
I'm Pots PhoneI'm 3G PhoneI'm ISDN Phone
如上,為了舉例,我們只在每個檔案裡放置了一個函數,但其實你可以放置許多函數。你也可以在這些檔案裡定義Python的類,然後為這些類建一個包。
Python的包管理工具
Distribute是對標準庫disutils模組的增強,我們知道disutils主要是用來更加容易的打包和分發包,特別是對其他的包有依賴的包。
Distribute被建立是因為Setuptools包不再維護了。
安裝Distribute
可以通過distribute_setup.py 指令碼來安裝Distribute,也可以通過easy_install, pip,源檔案來安裝,不過使用distribute_setup.py來安裝是最簡單和受歡迎的方式
$ curl -0 http://python-distribute.org/distribute_setup.py$ sudo python distribute_setup.py
Pip 是安裝python包的工具,提供了安裝包,列出已經安裝的包,升級包以及卸載包的功能。
Pip 是對easy_install的取代,提供了和easy_install相同的尋找包的功能,因此可以使用easy_install安裝的包也同樣可以使用pip進行安裝。
安裝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 installeasy_install:$ easy_install pip
get_pip.py 指令碼:
$ curl -0 https://raw.github.com/pypa/pip/master/contrib/get-pip.py$ sudo python get-pip.py
OK, 下面來看一下Pip的使用
安裝package
$ pip install Markdown
列出安裝的packages
$ pip freeze
安裝特定版本的package
通過使用==, >=, <=, >, <來指定一個版本號碼。
$ pip install 'Markdown<2.0'$ pip install 'Markdown>2.0,<2.0.3'
升級包
升級包到當前最新的版本,可以使用-U 或者 --upgrade
$ pip install -U Markdown
卸載包
$ pip uninstall Markdown
查詢包
pip search "Markdown"
PS -- 包安裝後的py檔案路徑:
/usr/local/lib/python2.7/dist-packages