分發(fā) Python 模塊?

電子郵箱

distutils-sig@python.org

作為一個(gè)流行的開(kāi)源開(kāi)發(fā)項目,Python擁有一個(gè)活躍的貢獻者和用戶(hù)支持社區,這些社區也可以讓他們的軟件可供其他Python開(kāi)發(fā)人員在開(kāi)源許可條款下使用。

這允許Python用戶(hù)有效地共享和協(xié)作,從其他人已經(jīng)創(chuàng )建的解決方案中受益于常見(jiàn)(有時(shí)甚至是罕見(jiàn)的)問(wèn)題,以及可以提供他們自己的解決方案。

本指南涵蓋了分發(fā)部分的流程。有關(guān)安裝其他Python項目的指南,請參閱 安裝指南。

備注

對于企業(yè)和其他機構用戶(hù),請注意許多組織都有自己的政策來(lái)使用和貢獻開(kāi)源軟件。在使用Python提供的分發(fā)和安裝工具時(shí),請考慮這些政策。

關(guān)鍵術(shù)語(yǔ)?

  • the Python Package Index is a public repository of open source licensed packages made available for use by other Python users

  • Python Packaging Authority 是負責標準打包工具以及相關(guān)元數據和文件格式標準維護與改進(jìn)的開(kāi)發(fā)人員和文檔作者團隊。 他們基于 GitHubBitbucket 這兩個(gè)平臺維護著(zhù)各種工具、文檔和問(wèn)題追蹤系統。

  • distutils 是 1998 年首次添加到 Python 標準庫的原始構建和分發(fā)系統。 雖然直接使用 distutils 正在逐步淘汰,但它仍然為當前的打包和分發(fā)基礎架構奠定了基礎它不僅仍然是標準庫的一部分,而且它的名稱(chēng)還以其他方式存在(例如用于協(xié)調 Python 打包標準開(kāi)發(fā)的郵件列表的名稱(chēng))。

  • setuptools (在很大程度上)是作為 distutils 的取代者,于 2004 年首次發(fā)布。 它對未經(jīng)修改的 distutils 工具最重要的補充是能夠聲明對其他包的依賴(lài)。 目前它被推薦用來(lái)替代 distutils,其更新更為頻繁,在更為多樣的 Python 版本之上為最新的打包標準提供持續支持。

  • wheel (在此上下文中)是一個(gè)將 bdist_wheel 命令添加到 distutils/setuptools 的項目。這產(chǎn)生了一個(gè)跨平臺的二進(jìn)制打包格式(稱(chēng)為“輪子”或“輪子文件”,并在 PEP 427 中定義),它允許在系統上安裝Python庫,甚至包括二進(jìn)制擴展的庫,而不需在本地進(jìn)行構建。

開(kāi)源許可與協(xié)作?

在世界上大多數地方,軟件自動(dòng)受版權保護。這意味著(zhù)其他開(kāi)發(fā)人員需要明確的權限來(lái)復制,使用,修改和重新分發(fā)軟件。

開(kāi)源許可是一種以相對一致的方式明確授予此類(lèi)權限的方式,允許開(kāi)發(fā)人員通過(guò)為各種問(wèn)題免費提供通用解決方案來(lái)有效地共享和協(xié)作。這使得許多開(kāi)發(fā)人員可以將更多時(shí)間用于關(guān)注他們特定情況相對獨特的問(wèn)題。

Python提供的分發(fā)工具旨在使開(kāi)發(fā)人員選擇開(kāi)源時(shí),可以合理地直接將其自己的貢獻回饋到該公共軟件池。

無(wú)論該軟件是否作為開(kāi)源軟件發(fā)布,相同的分發(fā)工具也可用于在組織內分發(fā)軟件。

安裝相關(guān)工具?

標準庫不包括支持現代Python打包標準的構建工具,因為核心開(kāi)發(fā)團隊已經(jīng)發(fā)現,即使在舊版本的Python上,使用一致工作的標準工具也很重要。

可以通過(guò)在命令行調用 pip 模塊來(lái)安裝當前推薦的構建和分發(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用戶(hù),這些說(shuō)明假定在安裝Python時(shí)選擇了調整系統PATH環(huán)境變量的選項。

Python 打包用戶(hù)指南包含有關(guān) 當前推薦工具的 的更多詳細信息。

閱讀 Python 打包用戶(hù)指南?

“Python 打包用戶(hù)指南”介紹了創(chuàng )建和發(fā)布項目所涉及的各個(gè)關(guān)鍵步驟和元素:

我該如何...??

這是一些常見(jiàn)任務(wù)的快速解答或相關(guān)鏈接。

...為我的項目選擇一個(gè)名字??

這不是一個(gè)簡(jiǎn)單的主題,但這里有一些提示:

  • check the Python Package Index to see if the name is already in use

  • 檢查流行的托管網(wǎng)站如 GitHub,Bitbucket 等等,看是否已有一個(gè)該名稱(chēng)的項目

  • 檢查您正在考慮的名稱(chēng)在網(wǎng)絡(luò )搜索中出現的內容

  • 避免使用特別常見(jiàn)的單詞,尤其是具有多重含義的單詞,因為它們會(huì )使用戶(hù)在搜索時(shí)難以找到您的軟件

...創(chuàng )建和分發(fā)二進(jìn)制擴展??

這實(shí)際上是一個(gè)非常復雜的主題,根據您的目標,可以提供各種替代方案。 有關(guān)更多信息和建議,請參閱 Python 打包用戶(hù)指南。