Python中setuptools作什麼用的?

歸納html

setuptools是 Python Enterprise Application Kit(PEAK)的一個副項目,它 是一組Python的 distutilsde工具的加強工具(適用於 Python 2.3.5 以上的版本,64 位平臺則適用於 Python 2.4 以上的版本),可讓程序員更方便的建立和發佈 Python 包,特別是那些對其它包具備依賴性的情況。python

1.簡介

常常接觸Python的同窗可能會注意到,當須要安裝第三方python包時,可能會用到 easy_install命令。 easy_install是由PEAK(Python Enterprise Application Kit)開發的setuptools包裏帶的一個命令,因此使用easy_install其實是在調用setuptools來完成安裝模塊的工做。
Perl 用戶比較熟悉 CPAN,而 Ruby 用戶則比較熟悉 Gems;引導 setuptools 的 ez_setup 工具和隨之而生的擴展後的 easy_install 與 「Cheeseshop」(Python Package Index,也稱爲 「PyPI」)一塊兒工做來實現相同的功能。它能夠很方便的讓您自動下載,編譯,安裝和管理Python包。
 

2.優勢

相比Python 自帶的用於發佈 Python 應用程序的模塊distutils,setuptools 的真正優勢並不在於實現distutils 所能實現的功能——儘管它的確加強了distutils的功能並簡化了setup。py腳本中的內容。setuptools 最大的優點是它在包管理能力方面的加強。它可使用一種更加透明的方法來查找、下載並安裝依賴包;並能夠在一個包的多個版本中自由進行切換,這些版本都安裝在同一個系統上;也能夠聲明對某個包的特定版本的需求;還能夠只使用一個簡單的命令就能更新到某個包的最新版本。給人印象最爲深入的是,即便有些包的開發人員可能還從未考慮過任何 setuptools 兼容性問題,咱們依然可使用這些包。
特性  
a. 在構建時使用 EasyInstall 工具自動查找、下載、安裝、升級所依賴的軟件包,EasyInstall 支持經過HTTP、 FTP、 Subversion 以及 SourceForge 下載軟件包,並能自動掃描 PyPI 上的網頁以找到下載連接。(對於熟悉 Perl 的用戶, PyPI 是 Python 領域最接近的 CPAN了)
b. 建立 Python Eggs,一種單文件的可導入的發佈格式。
c. 在包中的目錄中能夠包含數據文件,容許代碼訪問這些數據文件。(Python 2.4 distutils 也支持這個特性,不過 setuptools 能爲面向 Python 2.3 的包也提供這樣的特性,此外還支持訪問壓縮包中的數據。)
d. 自動包含程序員的 源代碼樹中的全部包,而不須要在獨立的setup。py中逐個聲明。
e. 自動在 源代碼發佈中包含全部相關的文件,而無需建立MANIFEST。in文件,也沒必要在 源代碼樹改變後強制生成 MANIFEST。
f. 自動爲程序員項目中的任意數量的「main」函數生成封裝 腳本或者 Windows (控制檯或者圖行用戶界面) .exe 文件。(注:這並非 py2exe 的替代方案;這裏生成的 .exe 須要基於已安裝的 Python,而 py2exe 則不須要。)
g. 透明的 Pyrex(Pyrex 容許程序員編寫混合 Python 和 C  數據類型的代碼,並編譯爲 Python 的 C 擴展。)支持,這樣程序員的 setup。py 得以列出 .pyx 文件而且即便最終用戶沒有安裝 Pyrex 也可以運行(固然這須要程序員在 源代碼發佈包中包含 Pyrex 生成的 C 代碼)。
h. 對建立命令行別名的支持,setuptools 能夠幫助程序員爲發佈包建立項目須要的、每一個用戶或者全局的快捷方式,這一般用於命令行或選項中。
i. 上傳發布包到 PyPI 的支持,setuptools 能夠幫助程序員將源碼包或者 eggs 發佈到 PyPI 上。
j. 能夠以「開發模式」發佈程序員的項目,這樣它能夠出如今 sys.path 中,而程序員依然能夠直接編輯 源代碼的工做副本。
k. 方便的爲 distutils 擴展新功能或者 setup() 參數,並可以發佈可供不一樣的項目重複使用的擴展包,而無需複製代碼。
l. 建立具備自動發現擴展功能的可擴展的應用程序或框架,只要在項目的安裝腳本中簡單的聲明「 入口點(entry points)」便可。
 

3.安裝

 

使用ez_setup。py安裝

這是 setuptools 自豪的一種安裝方式,只須要一個大約 8K 做爲的腳本ez_setup。py,就能自動爲用戶安裝包括 setuptools 自身在內的許多 Python 包。
使用這種方式,用戶只須要下載 ez_setup。py 並運行,就能夠自動下載和安裝適合用戶當前 Python 版本的適當的 setuptools egg 文件(固然,用戶須要 Python 2.3.5 以上的版本,64 位操做系統的用戶則須要 Python 2.4 以上的版本)。此外,這段腳本還會將可執行的  easy_install 腳本安裝到用戶全部的操做系統 Python 可執行腳本正常應該安裝的位置(例如,Windows 用戶會安裝到 Python  安裝目錄下的 Scripts 目錄中)。關於這種安裝方法的更詳細說明和注意事項,請參考其官方說明(見擴展閱讀)。簡單的安裝命令以下:
wget -q ez_setup。py下載地址(見擴展閱讀) 安裝完後,最好確保
 

使用完整的安裝包安裝

固然,用戶也可使用 setuptools 在 Python Cheese Shop 上發佈的合適的完整的發佈版原本安裝。對於使用 Windows 的用戶,這也是挺方便的方法,。
許多 Linux 發行版的官方包管理倉庫都包含 setuptools 的某個版本。例如,若是你跟我同樣使用 Ubuntu ,那安裝 setuptools 只是簡單的進行以下操做:
# apt-get install python-setuptools
 

4. 使用方法linux

使用方法很是簡單,在命令行輸入「easy_install 參數」便可。程序員

a、經過模塊名稱來安裝。setuptools會自動搜索PyPI 以查找最新版本的模塊。若是找到的話,她會自動下載、編譯和安裝:ubuntu

  例如:easy_install SQLObject框架

說明,安裝過程可能須要權限,若是是ubuntu的話,能夠加上sudo函數

b、指定查找頁面("download page")來使用名稱和版本信息來安裝或升級一個模塊:工具

  easy_install -f http://pythonpaste.org/package_index.html SQLObjectspa

c、從指定模塊下載地址來下載模塊源碼並在下載成功以後編譯安裝操作系統

  easy_install http://example.com/path/to/MyPackage-1.2.3.tgz

d、在本地已經存在的egg文件基礎上來安裝模塊

  easy_install /my_downloads/OtherPackage-3.2.1-py2.3.egg

e、升級一個已經安裝的模塊到最新版本,若是在PyPI中這個模塊有最新版本。

  easy_install --upgrade PyProtocols

f、從源碼中安裝模塊(源碼已經下載並解壓到當前文件夾下)(New in 0.5a9)

  easy_install .

g、模塊卸載 easy_install -m package-name (好比easy_install -m pylab)

若是想刪除經過easy_install安裝的軟件包,好比說:MySQL-python,能夠執行命令:

easy_install -m MySQL-python

注:此操做會從easy-install.pth文件裏把MySQL-python的相關信息抹去,剩下的egg文件,你能夠手動刪除。

 5. 其餘

更多easyinstall的使用方法參考Easyinstall官方文檔

注:經過easy_install安裝軟件,相關安裝信息會保存到easy-install.pth文件裏,路徑相似以下形式:

   Windows:C:\Python25\Lib\site-packages\easy-install.pth

   Linux:/usr/local/lib/python25/site-packages/easy-install.pth

四、相關資源

a、setuptools模塊下載地址:http://pypi.python.org/pypi/setuptools

b、setuptools在線文檔:http://peak.telecommunity.com/DevCenter/setuptools

c、Easy install在線文檔:http://peak.telecommunity.com/DevCenter/EasyInstall

d、可愛的 Python: 使用 setuptools 孵化 Python egghttp://www.ibm.com/developerworks/cn/linux/l-cppeak3.html

f、ez_setup.py腳本:http://peak.telecommunity.com/dist/ez_setup.py

 

以上是python下setuptools的簡介 。

 

6. 關於 egg egg 是一個包含全部包數據的文件包。在理想狀況中,egg 是一個使用 zip 壓縮的文件,其中包括了全部須要的包文件。可是在某些狀況下,setuptools 會決定(或被開關告知)包不該該是 zip 壓縮的。在這些狀況下,egg 只是一個簡單的不曾壓縮的子目錄,可是裏面的內容是相同的。使用單一的版本能夠方便地進行轉換,並能夠節省一點磁盤空間,可是 egg 目錄從功能和組織結構上來講都是相同的。一直使用 JAR 文件的 Java? 技術的用戶會發現 egg 很是熟悉

相關文章
相關標籤/搜索