Partially translated from: https://pyfound.blogspot.com/2020/03/new-pip-resolver-to-roll-out-this-year.html
去年的 PSF 發文中提到,pip 的開發團隊正在為 pip 實作一個新的解析器(resolver)。我們計畫在今年把它釋出。
解析器的最重要改變會包括:
-
讓安裝結果更一致:這個版本將不再允許安裝有內部衝突的套件組合。在目前的版本裡,如果使用者在指令中指定的套件版本與另一套件的依賴衝突,pip 仍然會允許安裝。
舉例而言,
pip install "six<1.12" "virtualenv==20.0.2"
現在會「成功」安裝six==1.11
。但這是錯誤的行為,因為virtualenv==20.0.2
其實指定了six>=1.12.0,<2
(宣告在這裡)。新的解析器會直接拒絕這個套件組合,而不會安裝任何東西。 -
更加嚴格:如果你要求 pip 安裝的套件中,依賴的套件版本有衝突,將會直接被拒絕。目前的版本在這個狀況下會安裝無法使用的組合。
這將會對 pip 的重要部分造成大規模變動,因此初步釋出的版本中十分可能會有 bug。我們希望能夠在所有人於生產環境中使用新版本之前,就確保能抓到這些問題。
(技術細節參見 GitHub 專案板。)
-
現在就可以參與我們的使用者經驗研究。任何人都可以填寫問卷,或者與研究員進行視訊訪談。麻煩大家踴躍登錄,並盡可能把資訊散布給更多的人知道。
-
在你的 Python 環境裡執行
pip check
(不需要新版解析器,現有的正式版即可)。這個指令會報告環境內目前有沒有衝突的套件。如果你的環境沒有衝突,新版解析器造成問題的機會就會大大降低。如果環境內有你無法解決的套件衝突,歡迎在我們的 issue tracker 或討論區發問!這些實務經驗也對解析器的開發很有幫助。 -
預先規劃時間(預計五月前後)測試 pip 新版本。(詳見事件時程)
- 如果你用 pip 安裝軟體,請試著用新版本安裝。
- 如果你的 build pipeline 用 pip 安裝專案依賴的套件,試著在建置系統使用新版本。
- 為專案增加使用新版本的 CI 建置,並報告任何問題。
- 若過去的 pip 版本曾經遇過任何依賴解析問題,看看新版解析器有沒有成功修正該問題。我們非常期待了解新解析器的技術限制,以讓更多人能更順利的升級。
若遇到任何問題,歡迎填寫回報問卷。
-
讓更多人知道!!
-
如果你開發的工具呼叫 pip,或用它提供了任何功能,請務必在五月測試我們釋出的 beta 版本,確認新版解析器對你產生的影響。
新版解析器預計於 2020 下半年正式釋出。我們會提早釋出 alpha 與 beta 版本,並讓大家在 GitHub 或以 email 回報。任何回饋都歡迎!
歡迎登陸 pypi-announce mailing list 獲得更多及時版本資訊與回報管道。