分發(fā) Python 模塊?
作為一個流行的開源開發(fā)項目,Python擁有一個活躍的貢獻(xiàn)者和用戶支持社區(qū),這些社區(qū)也可以讓他們的軟件可供其他Python開發(fā)人員在開源許可條款下使用。
這允許Python用戶有效地共享和協(xié)作,從其他人已經(jīng)創(chuàng)建的解決方案中受益于常見(有時甚至是罕見的)問題,以及可以提供他們自己的解決方案。
本指南涵蓋了分發(fā)部分的流程。有關(guān)安裝其他Python項目的指南,請參閱 安裝指南。
備注
對于企業(yè)和其他機(jī)構(gòu)用戶,請注意許多組織都有自己的政策來使用和貢獻(xiàn)開源軟件。在使用Python提供的分發(fā)和安裝工具時,請考慮這些政策。
關(guān)鍵術(shù)語?
the Python Package Index is a public repository of open source licensed packages made available for use by other Python users
Python Packaging Authority 是負(fù)責(zé)標(biāo)準(zhǔn)打包工具以及相關(guān)元數(shù)據(jù)和文件格式標(biāo)準(zhǔn)維護(hù)與改進(jìn)的開發(fā)人員和文檔作者團(tuán)隊。 他們基于 GitHub 和 Bitbucket 這兩個平臺維護(hù)著各種工具、文檔和問題追蹤系統(tǒng)。
distutils
是 1998 年首次添加到 Python 標(biāo)準(zhǔn)庫的原始構(gòu)建和分發(fā)系統(tǒng)。 雖然直接使用distutils
正在逐步淘汰,但它仍然為當(dāng)前的打包和分發(fā)基礎(chǔ)架構(gòu)奠定了基礎(chǔ)它不僅仍然是標(biāo)準(zhǔn)庫的一部分,而且它的名稱還以其他方式存在(例如用于協(xié)調(diào) Python 打包標(biāo)準(zhǔn)開發(fā)的郵件列表的名稱)。setuptools (在很大程度上)是作為
distutils
的取代者,于 2004 年首次發(fā)布。 它對未經(jīng)修改的distutils
工具最重要的補(bǔ)充是能夠聲明對其他包的依賴。 目前它被推薦用來替代distutils
,其更新更為頻繁,在更為多樣的 Python 版本之上為最新的打包標(biāo)準(zhǔn)提供持續(xù)支持。wheel (在此上下文中)是一個將
bdist_wheel
命令添加到distutils
/setuptools 的項目。這產(chǎn)生了一個跨平臺的二進(jìn)制打包格式(稱為“輪子”或“輪子文件”,并在 PEP 427 中定義),它允許在系統(tǒng)上安裝Python庫,甚至包括二進(jìn)制擴(kuò)展的庫,而不需在本地進(jìn)行構(gòu)建。
開源許可與協(xié)作?
在世界上大多數(shù)地方,軟件自動受版權(quán)保護(hù)。這意味著其他開發(fā)人員需要明確的權(quán)限來復(fù)制,使用,修改和重新分發(fā)軟件。
開源許可是一種以相對一致的方式明確授予此類權(quán)限的方式,允許開發(fā)人員通過為各種問題免費提供通用解決方案來有效地共享和協(xié)作。這使得許多開發(fā)人員可以將更多時間用于關(guān)注他們特定情況相對獨特的問題。
Python提供的分發(fā)工具旨在使開發(fā)人員選擇開源時,可以合理地直接將其自己的貢獻(xiàn)回饋到該公共軟件池。
無論該軟件是否作為開源軟件發(fā)布,相同的分發(fā)工具也可用于在組織內(nèi)分發(fā)軟件。
安裝相關(guān)工具?
標(biāo)準(zhǔn)庫不包括支持現(xiàn)代Python打包標(biāo)準(zhǔn)的構(gòu)建工具,因為核心開發(fā)團(tuán)隊已經(jīng)發(fā)現(xiàn),即使在舊版本的Python上,使用一致工作的標(biāo)準(zhǔn)工具也很重要。
可以通過在命令行調(diào)用 pip
模塊來安裝當(dāng)前推薦的構(gòu)建和分發(fā)工具:
python -m pip install setuptools wheel twine
備注
For POSIX users (including macOS and Linux users), these instructions assume the use of a virtual environment.
對于Windows用戶,這些說明假定在安裝Python時選擇了調(diào)整系統(tǒng)PATH環(huán)境變量的選項。
Python 打包用戶指南包含有關(guān) 當(dāng)前推薦工具的 的更多詳細(xì)信息。
閱讀 Python 打包用戶指南?
“Python 打包用戶指南”介紹了創(chuàng)建和發(fā)布項目所涉及的各個關(guān)鍵步驟和元素:
我該如何...??
這是一些常見任務(wù)的快速解答或相關(guān)鏈接。
...為我的項目選擇一個名字??
這不是一個簡單的主題,但這里有一些提示:
check the Python Package Index to see if the name is already in use
檢查流行的托管網(wǎng)站如 GitHub,Bitbucket 等等,看是否已有一個該名稱的項目
檢查您正在考慮的名稱在網(wǎng)絡(luò)搜索中出現(xiàn)的內(nèi)容
避免使用特別常見的單詞,尤其是具有多重含義的單詞,因為它們會使用戶在搜索時難以找到您的軟件
...創(chuàng)建和分發(fā)二進(jìn)制擴(kuò)展??
這實際上是一個非常復(fù)雜的主題,根據(jù)您的目標(biāo),可以提供各種替代方案。 有關(guān)更多信息和建議,請參閱 Python 打包用戶指南。