Python 2 將在幾週內走到生命終點,這篇文章是你遷移到 Python 3 之前應該知道的。
從 2020 年 1 月 1 日開始,Python 2.7 將不再得到正式支援。在此日期之後,將會發布一個最終錯誤修復計劃,但是僅此而已。
Python 2 的生命終點(EOL)對你意味著什麼?如果正在執行著 Python 2,你需要遷移。
在 2012 年,維護 Python 程式語言的團隊審查了其選項。有兩個越來越不同的程式碼庫,Python 2 和 Python 3。這兩者都很流行,但是較新的版本並未得到廣泛採用。
除了 Python 3 中完全重寫的 Unicode 支援改變了處理資料的底層方式造成的斷層,這個主要版本的變化還一次性出現了一些非向後相容的更改。這種斷層的決定成文於 2006 年。為了減輕該斷層的影響,Python 2 繼續保持了維護,並向後移植了一些 Python 3 的功能。為了進一步幫助社群過渡,EOL 日期從 2015 年延長至 2020 年,又延長了五年。
該團隊知道,維護不同的程式碼庫是必須解決的麻煩。最終,他們宣布了一項決定:
“我們是製作和照料 Python 程式語言的志願者。我們已決定 2020 年 1 月 1 日將是我們停止使用 Python 2 的日子。這意味著在這一天之後,即使有人發現其中存在安全問題,我們也將不再對其進行改進。你應盡快升級到 Python 3。”
Nick Coghlan 是 CPython 的核心開發人員,也是 Python 指導委員會的現任成員,在他的部落格中新增了更多資訊。由 Barry Warsaw(也是 Python 指導委員會的成員)撰寫的 PEP 404 詳細說明了 Python 2.8 永遠不會面世的原因。
提供者和供應商對 Python 2 的支援會有所不同。Google Cloud 宣布了它計劃未來如何支援 Python 2。紅帽還宣布了紅帽企業 Linux(RHEL)的計劃,而 AWS 宣布了 AWS 命令列介面和 SDK 的次要版本更新要求。
你還可以閱讀 Vicki Boykis 在 Stack Overflow 撰寫的部落格文章“為什麼遷移到 Python 3 需要這麼長時間?”,其中她指出了採用 Python 3 緩慢的三個原因。
不管是否有持續的支援,儘快遷移到 Python 3 是一個好主意。Python 3 將繼續受到支援,它具有 Python 2 所沒有的一些非常優雅的東西。
最近發布的 Python 3.8 包含 海象運算子、位置引數和自描述的格式化字串等功能。Python 3 的早期版本引入的功能,例如 非同步 IO、格式化字串、型別提示 和 pathlib,這裡只提及了一點點。
下載最多的前 360 個軟體包已遷移到 Python 3。你可以使用 caniusepython3 軟體包檢查你的 requirements.txt
檔案,以檢視你依賴的任何軟體包是否尚未遷移。
有許多參考資源可簡化你向 Python 3 的遷移。例如,“將 Python 2 移植到 Python 3 指南”列出了許多工具和技巧,可幫助你實現與 Python 2/3 單一原始碼的相容性。在 Python3statement.org 上也有一些有用的技巧。
Dustin Ingram 和 Chris Wilcox 在 Cloud Next ‘19上作了一個演講,詳細介紹了向 Python 3 過渡的一些動機和遷移模式。Trey Hunner 在 PyCon 2018 演講上介紹了 Python 3 最有用的功能,鼓勵你進行遷移,以便你可以利用它們。
距 2020 年 1 月 1 日僅有幾週了。如果你需要每天提醒一下它即將到來的時間(並且你使用 Twitter 的話),請關注 Python 2 日落倒計時 Twitter 機器人。