複製鏈接
請複製以下鏈接發送給好友

setuptools

鎖定
setuptools是 Python Enterprise Application Kit(PEAK)的一個副項目,它 是一組Python的 distutilsde工具的增強工具(適用於 Python 2.3.5 以上的版本,64 位平台則適用於 Python 2.4 以上的版本),可以讓程序員更方便的創建和發佈 Python 包,特別是那些對其它包具有依賴性的狀況。
中文名
setuptools
適    用
Python 2.3.5 以上的版本
優    點
增強了distutils的功能
簡    化
setup.py腳本中的內容

setuptools簡介

經常接觸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包。

setuptools優點

相比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)”即可。

setuptools安裝

使用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

setuptools使用

setuptools安裝模塊

easy_install package-name(比如 easy_install pylab)

setuptools模塊卸載

easy_install -m package-name (比如easy_install -m pylab)
easy_install -m 包名,可以卸載軟件包,但是卸載後還要手動刪除遺留文件。