最近,Numpy 團隊的一份聲明引起了數據科學社區的關注:這一科學計算庫即將放棄對 Python 2.7 的支持,全面轉向 Python 3。因爲目前存在不少基於 Numpy 的深度學習依賴庫,該決定意味着全部在此之上的工具都將失去對於 Python 2.7 的支持。Numpy 並非惟一宣稱即將放棄 Python 舊版本支持的工具,經開發者整理髮現,pandas 與 Jupyter notebook 也在即將放棄支持的名單之中。
Numpy 的聲明python
Python 核心團隊計劃在 2020 年中止支持 Python 2。NumPy 自 2010 年以來同時並行支持 Python 2 和 Python 3,可是因爲資源有限,支持 Python 2 變成了一個日漸加劇的負擔;所以,咱們計劃最終中止支持 Python 2。如今咱們進入了社區支持的 Python 2 的最後幾年,NumPy 想要說明咱們的計劃,並以幫助咱們的下游生態制定計劃,儘量順利地實現過渡爲目標。git
咱們的當前計劃以下:github
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 分支來作協調。python2.7
若是你是一名在 2020 年或之後仍需 Python 2 支持的 NumPy 用戶,那麼請聯繫你的供應商。若是你是供應商,想要在 2020 年之後繼續支持 Python 2 上的 NumPy,請聯繫咱們。理想狀況下,咱們但願你在 LTS 結束以前參與維護,以便順利實現過渡。ide
Python 團隊的聲明工具
Python 科學棧中的全部主要項目如今都支持 Python 3.x 和 Python 2.7,不少項目已經支持這兩種版本不少年。儘管咱們不斷開發用於高效維護兼容性的工具和技術,可是在大量代碼開發中這仍然是雖然微小但常常出現的衝突。學習
咱們但願充分使用 Python 3,目前接受交叉兼容代碼以實現順利過渡,可是咱們不打算無限期維護該兼容性。儘管從 Python 2 到 Python 3 的過渡不像咱們但願的那麼快,可是它的確發生了,愈來愈多的人使用、教授和推薦 Python 3。ui
因爲不少人仍然使用 Python 2,Python 語言的開發者將 Python 2.7 的支持期擴展爲 2015 到 2020。咱們認爲這 5 年足夠用戶從 Python 2 中遷移出來,咱們的項目計劃最遲在 2020 年末中止支持 Python 2。以後,咱們可以簡化代碼,充分利用 Python 語言和標準庫當前版本的不少新功能。cdn
此外,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 二、發佈時間線,以及擴展支持的時間。
Python 本身的時間線:Python Developer’s Guide
Python 2 的消失將使許多學界工具成爲孤兒,不少已公佈的結果將變得不可復現。儘管將現有項目移植到 Python 3 上是可能的,但這意味着大量的時間和資金需求。
參考內容:
Sunsetting Python 2 support in scientific Python projects
機器之心報道