【FETAL】Python 2 自生自滅倒計時,官方不再維護更新

  • 2019 年 10 月 4 日
  • 筆記

乾明 栗子 發自 凹非寺 量子位 報道 | 公眾號 QbitAI

Python 2終於走到了盡頭。

官方宣布,新一年的鐘聲響起之時(2020年1月1日),就是Python 2落幕之日。

這一舉動得到了不少支援與理解:

也有人念舊。有網友開始放話,表示自己會支援Python2的維護與更新,不為什麼,就是想用Python 2。

但隨著官方不再支援Python 2,近年來也有大量的工具宣布放棄支援Python 2。比如TensorFlow、Pandas、Numpy、Jupyter Notebook、Cython等工具。

如果想用好Python,擺在Python 2用戶面前的路似乎就只有一條:

升級到Python 3。

升級攻略

升級的路上,會遇到很多問題,Python官方先幫你解答了一波:

1、沒在2020年1月1日之前更新會怎樣呢?

  • 如果有人發現Python 2裡面有災難性的安全漏洞,也不會有太多人志願幫忙修補的。
  • 需要Python 2的相關幫助,也不會有很多人去幫你了。隨著時間的推移,能幫到你的人還會越來越少。
  • 很多好工具都用不了,因為只有Python 3才支援。這樣的話,還可能拖累那些跟你一起工作的小夥伴。

以上問題,有些會從1月1日開始產生,另一些會隨著時間越來越嚴重。

2、我在Python 2里寫的程式碼,怎麼遷移到Python 3?

有中文文檔提供,詳細介紹了步驟,可以自動遷移。除此之外,由2到3,一些函數發生了變化,文檔里有列表,各位可以自行查找,手動修改:

中文文檔:2to3 – 自動將 Python 2 程式碼轉為 Python 3 程式碼https://docs.python.org/zh-cn/3.7/library/2to3.html

另外,還有兩個英文文檔可以參考:

Porting Python 2 Code to Python3 https://docs.python.org/3/howto/pyporting.html

Python 3 Statement Practicalities https://python3statement.org/practicalities/

3、我不確定我用的軟體會不會依賴於Python 2,怎麼辦?

如果你是從供應商那裡買的軟體,問他們就好了。如果你是向開發者或者系統管理員付費的話,就問這些人。

要是找不到相關的供應商和技術人員,就用「Can I Use Python 3?」去查找,你到底需不需要某個用Python 2寫的軟體。

Can I Use Python 3:https://pypi.org/project/caniusepython3/

想知道某些特定的工具,和Python 3兼不兼容,可以看Python 2.7 Readiness、Python 3 Statement,以及Python 3 Readiness。

4、我還是依賴一些用Python 2寫的軟體,怎麼辦?

同理,也是詢問供應商和技術支援人員,如果你是向開發者或者系統管理員付費,就去問他們。

問不到的話,用「Can I Use Python 3?」來查找升級到Python 3的工具。

Can I Use Python 3:https://pypi.org/project/caniusepython3/

5、有人能幫我一下么?

有。如果你能支付擴展支援 (Extended Support) 的費用,就跟這些供應商聯繫吧:

https://wiki.python.org/moin/PythonConsulting/Python%202%20support%20and%20migration

six庫傳送門:https://pypi.org/project/six/

Python 2往事

Python源自20世紀80年代末,當時Python的創建者Guido van Rossum正在CWI(荷蘭數學與電腦研究所)研究Amoeba分散式計算系統,使用C和Unix shell。在這個過程中,他逐漸對這些語言感到不爽,不僅運行速度太慢,無法處理複雜邏輯,也不得不重複造輪子。

  • 1991年,Python第一版問世,可以說是兼具各家之長。
  • 之後一路勢如破竹,2003年以來,Python一直在TIOBE排行榜中最受歡迎的程式語言的前十位。
  • Python在2007年獲得了TIOBE年度最佳程式語言獎。該獎項是根據TIOBE指數,授予全年受歡迎程度最高的程式語言。

Python 2當時也受到大公司青睞:包括Google、Facebook、亞馬遜在內的諸多知名公司都在使用它,包括YouTube、Reddit在內的大型應用,都是出自Python。

科研機構NASA還用Python來簡化太空梭的任務流程設計,去探索太空。

Python 3未來

隨著算力的不斷增強,計算平台發生變遷,Python這條「巨蟒」在新的運行環境中,逐漸變得力有不逮。

2008年,為了修復缺陷,更好地適應新環境,讓Python更有生命力,Python社區做了一個非常有決斷的動作:

推出Python 3,不向後兼容。

當時給Python 2.7定下的Deadline是2015年。因為擔心大量現有程式碼無法遷移到Python 3,這一時間又推遲到了2020年。

這背後長痛不如短痛的想法,輕裝前行的理念等等, 大部分開發者都理解。

而且,這也為Python贏得了不少使用場景,最典型的就是成為了機器學習這一熱門領域的寵兒。

Google的TensorFlow使用的就是Python。Facebook更直接,從PyTorch的名字來看就知道它和Python密不可分的聯繫。

但版本割裂帶來的陣痛,還是成為了Python被詬病的一大重點。

雖然Python也發布了程式,幫助開發者更好地將Python 2程式碼轉換為Python 3。

但這也讓不少人糾結與徘徊,更有對手看到了機會,而且來勢洶洶。

比如Google2009年正式推出的Go,更是「明目張胆」地搶人——開發一款從Python 2.7到Go語言的編譯器。

還有Julia。這一源自MIT的新程式語言,創建於Python 3發布第二年,2012年公開發布。

主要的應用領域為數據分析、機器學習、物理學、數學、人工智慧、訊號與影像處理等等。

而這些,都是當下Python發揮作用、面向未來的核心陣地。

不過,Python也沒有停下來發展的腳步,也在不斷推陳出新,面向未來編程。

比如PyPy的不斷優化,SciPy和NumPy的不斷完善等等,都在放大Python的能量。

現在,Python辭舊的倒計時已經掛起。

這個起於20世紀80年代一個業餘項目的語言,到現在仍舊具備超強生命力,兼容並包,成為開發者手中的利器,不斷吞噬世界。