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腳本中的內容
簡介,優點,安裝,使用ez_setup.py安裝,使用完整的安裝包安裝,使用,安裝模組,模組卸載,
簡介
經常接觸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包。
優點
相比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)”即可。
安裝
使用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
使用
安裝模組
easy_install package-name(比如 easy_install pylab)
模組卸載
easy_install -m package-name (比如easy_install -m pylab)
easy_install -m 包名,可以卸載軟體包,但是卸載後還要手動刪除遺留檔案。