Python釋出新的標準包鎖檔案格式

導讀:Python釋出了新的標準包鎖檔案格式,遵守PEP 751標準。
Python 團隊正在開始採用 PEP 751,它指定了應用程式包之間的依賴關係,從此無需動態依賴關係解析即可實現可重複的安裝。
Python 核心開發人員 Paul Moore 這樣表示說:
“這是完全的、徹底的最終接受,而並非臨時的”,他還希望避免在新標準實施和使用之前出現延遲。話雖如此,並非所有現有的包管理器都可以取代其現有的本地鎖定檔案格式。新標準將使用.toml,它已經受到包括 Python 在內的程式語言的廣泛支援,它的一個好處是特別容易閱讀。 
微軟首席軟體工程師 Brett Cannon 也是核心Python的開發人員,他是 2021 年提出PEP 665 的人之一。Python 應用程式依賴於模組(也稱為包),這些模組透過匯入系統使用。為了使應用程式安裝可重現,每次安裝時都必須使用這些包的相同版本。好處是包括可靠性和更高的安全性,透過指定包依賴項和版本來實現。 
在 PEP 665 中發現的問題是並沒有標準的 Python 鎖檔案,而是多個工具(例如 PDM、Poetry、pip-tools 和 Pipenv)都在使用自己不同的格式,這給開發者和託管服務提供商帶來了很大的複雜性。
PEP 665 提案於 2022 年初被拒絕,根據核心開發人員 Paul Moore 的拒絕資訊說,其原因是社群希望“更好地瞭解我們真正想要什麼” 。
一個關鍵問題是 Python wheel(二進位制包)與 sdist(源分發)之間存在區別,後者可在沒有 wheel 時使用。如果使用 sdist,則很難保證可重複性。PEP 665 根本不支援 sdist,所以 Poetry 團隊表示無法支援它。
2024 年 7 月,Cannon 提出了PEP 751,其中特別提到了 sdist,併為使用者提供了選擇加入或退出使用的選項。2025 年 1 月,Python社群對 PEP 751 的修訂進行了廣泛討論,社群試圖找到一種可以被 Poetry、PDM 和 uv(用 Rust 編寫的包管理器)等工具都能採用的解決方案。
關於這方面的訊息,開發者們也都議論紛紛。“所有工具作者都表示他們可以並且會將 PEP 實現為匯出格式,”Cannon 說,但這並不意味著他們會將其作為唯一的鎖定檔案格式。uv 的建立者 Charlie Marsh表示說, “今天,PEP 751 風格的 pylock.toml 檔案不足以取代 uv.lock”,但會新增對匯出的支援。
當已有廣泛使用的競爭標準時,標準化就比較困難。Python 社群堅信官方標準的價值,但要讓所有打包工具都在內部使用它仍然是一個挑戰,而且需要進一步的修訂。
各位同學怎麼看?歡迎轉發、留言~
作者:洛逸
相關閱讀:

相關文章