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