最近,Numpy 團隊的一份宣告引發了資料科學社群的關注:這一科學計算庫即將放棄對 Python 2.7 的支援,全面轉向 Python 3。由於目前存在很多基於 Numpy 的深度學習依賴庫,該決定意味著所有在此之上的工具都將失去對於 Python 2.7 的支援。Numpy 並不是唯一宣稱即將放棄 Python 舊版本支援的工具,經開發者整理發現,pandas 與 Jupyter notebook 也在即將放棄支援的名單之中。
Numpy 的宣告
Python 核心團隊計劃在 2020 年停止支援 Python 2。NumPy 自 2010 年以來同時並行支援 Python 2 和 Python 3,但是由於資源有限,支援 Python 2 變成了一個日漸加重的負擔;因此,我們計劃最終停止支援 Python 2。現在我們進入了社群支援的 Python 2 的最後幾年,NumPy 想要說明我們的計劃,並以幫助我們的下游生態制定計劃,儘可能順利地實現過渡為目標。
我們的當前計劃如下:
2018 年 12 月 31 日之前,NumPy 所有版本仍將全面支援 Python 2 和 Python 3。2019 年 1 月 1 日開始,所有新功能版本將僅支援 Python 3。支援 Python 2 的最後版本將被指定為長期支援版本(LTS),即我們將繼續修復 bug,對 bug 修復版本的支援時間較長。具體講,社群將支援它到 2019 年 12 月 31 號。
2020 年 1 月 1 日,我們將向 Python 2 致敬,最後 Python 2 支援版本的社群支援將會結束。但是,你仍可在 PyPI 上無限期地使用它。如果任何商業供應商希望延長 LTS 支援時間,我們可以讓其使用官方 NumPy 庫中的 LTS 分支來做協調。
如果你是一名在 2020 年或以後仍需 Python 2 支援的 NumPy 使用者,那麼請聯絡你的供應商。如果你是供應商,想要在 2020 年以後繼續支援 Python 2 上的 NumPy,請聯絡我們。理想情況下,我們希望你在 LTS 結束之前參與維護,以便順利實現過渡。
Python 團隊的宣告
Python 科學棧中的所有主要專案現在都支援 Python 3.x 和 Python 2.7,很多專案已經支援這兩種版本很多年。儘管我們不斷開發用於高效維護相容性的工具和技術,但是在大量程式碼開發中這仍然是雖然微小但經常出現的衝突。
我們希望充分使用 Python 3,目前接受交叉相容程式碼以實現順利過渡,但是我們不打算無限期維護該相容性。儘管從 Python 2 到 Python 3 的過渡不像我們希望的那麼快,但是它的確發生了,越來越多的人使用、教授和推薦 Python 3。
由於很多人仍然使用 Python 2,Python 語言的開發者將 Python 2.7 的支援期擴充套件為 2015 到 2020。我們認為這 5 年足夠使用者從 Python 2 中遷移出來,我們的專案計劃最遲在 2020 年底停止支援 Python 2。之後,我們能夠簡化程式碼,充分利用 Python 語言和標準庫當前版本的很多新功能。
此外,2020 年之前,我們的一些專案將減少對 Python 2.7 的支援,只修復 bug,新功能版本則使用 Python 3。這和 Python 語言本身的支援相匹配,Python 2.7 版本僅包括修復 bug 和安全提升。
第三方可能對我們的舊 Python 版本專案提供付費支援,時間長於我們對舊 Python 版本的支援。我們不會阻止這類行為,這是免費、開源軟體的核心原則,因此這種行為是可行的。但是,如果你想要免費的第一方支援,請開始遷移到 Python 3 吧。
出於以上原因,下列專案將在 2020 年停止支援 Python 2.7,與 Python 開發團隊對此的時間線一致。
即將放棄支援 Python 2.x 的工具
以下專案已經明確表示將在 2020 年以前放棄對於 Python 2 的支援。
下表顯示了多個專案確定停止支援 Python 2 的時間。從該表中可以得知每個專案的哪個版本是否支援 Python 2、釋出時間線,以及擴充套件支援的時間。
Python 自己的時間線:Python Developer’s Guide
Python 2 的消失將使許多學界工具成為孤兒,很多已公佈的結果將變得不可復現。儘管將現有專案移植到 Python 3 上是可能的,但這意味著大量的時間和資金需求。
參考內容:
Sunsetting Python 2 support in scientific Python projects
機器之心報導