詳解Python編程中包的概念與管理
Python中的包
包是一個(gè)分層次的文件目錄結(jié)構(gòu),它定義了一個(gè)由模塊及子包,和子包下的子包等組成的Python的應(yīng)用環(huán)境。
考慮一個(gè)在Phone目錄下的pots.py文件。這個(gè)文件有如下源代碼:
#!/usr/bin/python # -*- coding: UTF-8 -*- def Pots(): print "I'm Pots Phone"
同樣地,我們有另外兩個(gè)保存了不同函數(shù)的文件:
- Phone/Isdn.py 含有函數(shù)Isdn()
- Phone/G3.py 含有函數(shù)G3()
現(xiàn)在,在Phone目錄下創(chuàng)建file __init__.py:
Phone/__init__.py
當(dāng)你導(dǎo)入Phone時(shí),為了能夠使用所有函數(shù),你需要在__init__.py里使用顯式的導(dǎo)入語句,如下:
from Pots import Pots from Isdn import Isdn from G3 import G3
當(dāng)你把這些代碼添加到__init__.py之后,導(dǎo)入Phone包的時(shí)候這些類就全都是可用的了。
#!/usr/bin/python # -*- coding: UTF-8 -*- # 導(dǎo)入 Phone 包 import Phone Phone.Pots() Phone.Isdn() Phone.G3()
以上實(shí)例輸出結(jié)果:
I'm Pots Phone I'm 3G Phone I'm ISDN Phone
如上,為了舉例,我們只在每個(gè)文件里放置了一個(gè)函數(shù),但其實(shí)你可以放置許多函數(shù)。你也可以在這些文件里定義Python的類,然后為這些類建一個(gè)包。
Python的包管理工具
Distribute是對標(biāo)準(zhǔn)庫disutils模塊的增強(qiáng),我們知道disutils主要是用來更加容易的打包和分發(fā)包,特別是對其他的包有依賴的包。
Distribute被創(chuàng)建是因?yàn)镾etuptools包不再維護(hù)了。
安裝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包的工具,提供了安裝包,列出已經(jīng)安裝的包,升級包以及卸載包的功能。
Pip 是對easy_install的取代,提供了和easy_install相同的查找包的功能,因此可以使用easy_install安裝的包也同樣可以使用pip進(jìn)行安裝。
安裝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 腳本:
$ 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
通過使用==, >=, <=, >, <來指定一個(gè)版本號。
$ pip install 'Markdown<2.0' $ pip install 'Markdown>2.0,<2.0.3'
升級包
升級包到當(dāng)前最新的版本,可以使用-U 或者 --upgrade
$ pip install -U Markdown
卸載包
$ pip uninstall Markdown
查詢包
pip search "Markdown"
PS -- 包安裝后的py文件路徑:
/usr/local/lib/python2.7/dist-packages
相關(guān)文章
Python探索之靜態(tài)方法和類方法的區(qū)別詳解
這篇文章主要介紹了Python探索之靜態(tài)方法和類方法的區(qū)別詳解,小編覺得還是挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。2017-10-10Python導(dǎo)入oracle數(shù)據(jù)的方法
這篇文章主要介紹了Python導(dǎo)入oracle數(shù)據(jù)的方法,涉及Python讀取csv文件信息再插入到Oracle數(shù)據(jù)庫的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07django 發(fā)送郵件和緩存的實(shí)現(xiàn)代碼
這篇文章主要介紹了django 發(fā)送郵件和緩存的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07Python實(shí)現(xiàn)自動化處理PDF文件的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何使用Python完成簡單的PDF文件處理操作,如PDF文件的批量合并、拆分、加密以及添加水印等,需要的可以參考一下2022-09-09Python實(shí)現(xiàn)多張圖片合成一張馬賽克圖片
這篇文章主要介紹了了Python如何實(shí)現(xiàn)將多張圖片合成一張馬賽克圖片。文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定的幫助,感興趣的可以學(xué)習(xí)一下2021-12-12Python代理抓取并驗(yàn)證使用多線程實(shí)現(xiàn)
這里沒有使用隊(duì)列只是采用多線程分發(fā)對代理量不大的網(wǎng)頁還行但是幾百幾千性能就很差了,感興趣的朋友可以了解下,希望對你有所幫助2013-05-05封裝Detours用于Python中x64函數(shù)hook詳解
Detours是微軟發(fā)布的一個(gè)API hook框架,同時(shí)支持x86和x64,看文檔說也支持ARM和ARM64的Windows,這篇文章主要介紹了封裝Detours用于Python中x64函數(shù)hook,需要的朋友可以參考下2023-12-12