官方倒計時:Python2的壽命還剩113天,逾期中止維護

做爲目前 最爲流行的編程語言,Python 的出現讓計算機編程再也不是生僻的專業技能,而是常人都能學習和使用的萬金油,它也是人工智能領域裏最爲經常使用的語言之一。不過在三個月內,Python 或許要經歷史上最大的一次變化。

昨天,Python 官方網站的一紙聲明《Python 2 的落幕》引起了人們的普遍討論:該開發社區表示,官方對於 Python 2 的支持將會在 2020 年 1 月 1 日結束,在這以後即便是出現安全問題,舊版本的語言也不會獲得任何改進。人們如今必須當即轉移到 3.0 以上版本了。

目前,仍有一些開發者以志願者的身份維護 Python2 語言。不過他們已共同決定,2020 年 1 月 1 日將是 Python2「生命終結」的那一天。該日以後,全部 Python2 相關的維護都將終止。html

爲何 Python2 更新到 Python3 這麼慢

不太瞭解編程的讀者可能會有個疑問:老是提 Python3 比 Python2 好太多,爲何仍是有人不更新呢?python

機器之心認爲可能主要有如下幾個緣由:

1. 工程穩定性相比軟件的更新速度更爲重要。編程

編程語言是構成軟件的基石,編程語言若是發生了更新換代,軟件的更新不是一件小事,須要全面地對全部代碼進行更新。在這一過程當中,若是出現新舊版本不兼容、代碼穩定性變差等狀況,可能會影響到用戶的持續使用。所以,對於一些版本迭代,不少軟件開發者選擇不更新。寧肯保證用戶使用的穩定性,也不能急於更新到最新版本。
安全

2. Python 官方「容許」Python2 持續存在。
app

Python 官方在文檔中也提到,大版本的更新有可能會「傷害」開發者。具體而言,若是在 2006 年就迅速要求開發者放棄 Python2,則不少開發者可能由於開發成本問題,直接放棄 Python。繁榮的開發者社區是維持 Python 編程語言地位的重要條件,所以官方一直在更新維護 Python2,讓更多的開發者留存在社區中。
機器學習

3. Python2 確實也好用。
編程語言

雖然相比 Python3,Python2 存在不少大的問題,可是 Python2 依然也是一個開發者友好的 Python 版本,在 Python2 時期就有不少開源庫支持了。所以,一些開發者但願繼續使用 Python2。
ide

這些緣由下來,Python3 取代 Python2 的進程就拖了十來年。不過,隨着機器學習的發展,機器學習領域對編程語言的性能有很高的要求,且大部分新的工具都支持 Python3。所以,使用性能更好,有更多工具支持的 Python3 成爲了開發者的必然選擇。
工具

放棄支持 Python2 的軟件列表
性能

2017 年,機器之心曾報道過將會放棄 Python2 的開源工具。目前,這一列表又長了不少。

TensorFlow、Scikit-learn、Pandas、XGBoost 等工具已經準備放棄 Python2。

同時中止支持的還包括 Numpy、Matplotlib、Jupyter Notebook 等。

還有不少如 Cython、IPython 在內的工具。

以上爲已經放棄 Python2 的開源工具列表(不徹底統計)。從這個列表能夠看到,Python 的生態系統是多麼龐大。

下表顯示了多個項目肯定中止支持 Python 2 的時間。從該表中能夠得知每一個項目的某個版本是否支持 Python 二、發佈時間線以及擴展支持的時間。(Python 本身的時間線:https://docs.python.org/devguide/#status-of-python-branches)

官方答疑

官方同時提供了一些相關的答疑,機器之心整理以下:

爲何要終止 Python2?

答:終止 Python2 是由於咱們要更好地幫助開發者。

Python2 是 2000 年發佈的。一些年以後,咱們意識到須要對 Python 進行一次大的更新升級。所以在 2006 年,咱們開始了 Python3 的開發工做。由於不少人在當時沒有更新,而咱們也不但願此次更新給他們形成損害,所以多年來咱們一直在維護並公開新的 Python2 和 Python3 版本。

可是這樣一來,維護 Python 的工做變得很是困難。Python2 中有一些改進和維護是很難進行下去的。這會擠佔咱們提高 Python3 速度和性能的精力。

並且,若是還有不少人繼續使用 Python2,那些用 Python 開發程序的開源工做者工做起來會更困難。他們不能使用 Python3 中的新特性讓開源工具變得更好用。

咱們不想傷害使用 Python2 的開發者,所以在 2008 年,咱們宣佈 Python2 將在 2015 年終止,並但願你們可以更新。當時,一些人更新了,可是還有一些人留在了 Python2 上,所以咱們將終止時間推後到了 2020 年。

目前 Python2 還有多久的壽命?

答:從 2019 年 9 月 10 日起算還有 3 個月 21 天。有一個倒計時,在 pythonclock.org (https://pythonclock.org/) 網站上。

機器之心在發稿時對倒計時網站的截圖。

若是沒有升級,會怎麼樣?

答:在終止日期到來後,即便用戶發現了 Python2 上的災難性安全問題,或者在 Python2 開發的軟件中發現了這些問題,志願者也不會幫助修復。若是用戶須要 Python2 相關的軟件協助,志願者也不會提供幫助,而且愈來愈少的志願者可以幫助到這些用戶。同時,用戶可能會失去使用優秀開源工具的機會,由於他們都是基於 Python3 開發的。同時,使用 Python2 的用戶可能會拖慢其餘使用 Python3 進行開發的人員的工做進度。

如何將 Python2 代碼轉爲 Python3?

答:請參閱官方提供的指南。

指南地址:https://docs.python.org/3/howto/pyporting.html

若是用戶基於 Python2 開發了一些軟件,應該怎麼作?

答:若是是從供應商那裏購買的軟件或軟件支持,則詳情可諮詢他們;若是是從開發者或系統管理員那裏付款得到的軟件,則諮詢這些開發者或管理員。若是兩者均不是,則點擊「Can I Use Python3?」頁面查找升級到 Python3 所須要的工具。

caniusepython3 頁面地址:https://pypi.org/project/caniusepython3/

是否有人員能夠提供用戶幫助?

答:是的。若是你付錢購買擴展支持,則與供應商聯繫。若是你能夠付錢聘請一些人來幫助你,則能夠在求職面板上發帖或直接聘請諮詢人員。若是你須要志願者提供免費幫助,則能夠查看如下幫助頁:https://www.python.org/about/help/。

用戶直到如今才據說 Python2 升級事宜。在哪裏宣佈的升級通知?

答:咱們在軟件會議、Python 通知郵件列表、Python 官方博客、相關參考書和技術文章、社交媒體以及與出售 Python 支持的公司都討論過 Python2 的升級事宜。

用戶怎樣才能確保下次及時收到升級通知呢?

答:從供應商那裏購買 Python 支持,或者訂閱 Python 通知郵件列表。

訂閱地址:https://mail.python.org/mailman3/lists/python-announce-list.python.org/

從答疑來看,Python2 會被完全拋棄。即便出現零日漏洞也不會有安全更新了,用戶要抓緊升級,以避免出現安全問題而得不到技術支持。

轉移需儘早

目前,獲得良好維護的開源項目大多已經轉移到 Python 3 上了。你能找到的 Python2 項目源碼,基本都是比較早期再也不維護的項目,或是一些系統級項目(由於 Linux 和 MacOS 都自帶 Python2.7)。根據 JetBrains 最新的 Python 開發者調查,大約 80% 開發者已在使用 3.5+ 版本。要知道在兩年前,使用 Python 3 的比例還只有三分之一。

Python 早已經提供了 2 to 3 自動化工具,僅需一行命令就能夠將 Python 2 代碼轉成 3。在 HackerNews 上,不少人對於 Python 2 支持的結束展開了討論。

有網友表示:「Python 2 到 3(至少是 3.3 版本以上)是我作過最容易的過渡之一。咱們能夠經過庫(Six)的幫助來完成轉移,在幾乎全部的狀況下你均可以編寫 2 到 3 版本兼容的代碼,這意味着轉移能夠以每次一小部分的形式進行。至於依賴項,開發者們也已幫助升級了不少第三方模塊。」

總之,「若是人們用抱怨此事一半的精力去研究如何升級,轉移到 3.x 版本的工做五年前就應該完成了。」根據經驗,除非你的項目有很是罕見且不可替代的依賴項,或者龐大的 C 語言擴展,不然版本的轉移會很容易。

相關文章
相關標籤/搜索