Python 2.x 即將終止支持,是時候和 Python 2 講再見了

←手機掃碼閱讀     admin @ 2019-08-27 , reply:0

別再約束自己了,Python 2將在2020年壽終正寢。

Python 2的報廢(EOL)日期遲遲未到,不過現在終於有了眉目。自2020年1月1日起,Python 2將不再得到支持。Python的核心開發人員將不再提供錯誤修復版或安全更新。

因此,如果你仍在使用Python 2.x,是時候將代碼移植到Python 3了。如果你繼續使用未得到支持的模塊,可能危及貴企業及數據的安全性,因為無人修復的漏洞遲早會出現。

問題的嚴重性

下面這張表列出了十個流行的Python軟體包及統計數據,來自Python社區開發和共享的軟體的存儲中心Python Package Index。

表中每個軟體包每月下載量達數百萬次。本文中的數據來自2019年6月。

正如你所見,大多數下載的軟體包仍針對Python 2.x版本。在最好的情況下,Web應用程序框架Flask主要是針對3.x而下載的。但即使如此,仍有近三分之一的下載仍針對2.x.

即使這些下載中只有一部分用於實際項目,Python 2報廢仍可能影響數百萬系統的安全性。

Python 2消亡帶來的問題

Python 2報廢帶來了許多問題,這裡是你可能會遇到的幾個問題。

依賴項

NumPy、Requests和TensorFlow等許多大受歡迎的項目承諾到2020年將停止支持2.x,一些項目已經這麼做了。

這意味著如果你想使用青睞的模塊的最新功能,需要使用Python 3。等待更新的時間越長,到時將更改的依賴項的Python 3版本會越多,更新起來會變得越困難。

你可能阻礙其他開發人員

如果你在維護其他開發人員依賴的庫,可能會阻止他們更新到3。如果阻礙其他開發人員,你在間接、可能無意中加大其他項目面臨的安全風險。

你也許不在貴公司外面發布任何代碼,但要考慮可能也在內部使用你代碼的同事。、

你錯失最新功能

Python 3有許多你錯失的新功能,包括如下:

  • 來自表達式的好處——允許生成器將其操作的一部分委託給另一個生成器。

  • 統一編碼字元串——統一編碼處理起來更容易。

  • 列印函數——列印函數有額外的功能,因而使其更靈活。

  • 視圖和迭代器取代列表——一些眾所周知的API不再返回列表。比如說,字典返回鍵的視圖、值的視圖或兩者的視圖。

  • 「multi-with」語句——複雜的with語句更易於閱讀。

  • 使用*和**解包——擴大了*可迭代解包運算符和**字典解包運算符的用途。現在可以在函數調用中使用任意數量的解包運算符。

  • 純關鍵字實參——允許實參出現在可變長度(varargs)實參的後面。

  • F字元串——運行時評估的一種新類型的字元串常量,可能含有任何有效的Python表達式。

  • 大量的加速和優化機制。

Python 3.0發布時,一些新功能向後移植到Python 2.7,可能很熟悉。如果你一直堅持使用2.6或更低版本,這些新功能對你來說可能很陌生。

幫助開發人員

將Python 2.x代碼移植到Python 3可能是很艱巨的過程。幸好,一些工具和資源可以使這個過程較容易。

Can I Use Python 3 這個程序可檢查你的項目依賴項,看看有沒有依賴項在阻止你使用Python 3。使用該程序來查看你是否需要換掉任何使用Python 2.x的庫。在這種情況下,有必要訪問該庫主頁,看看是否有計劃移植到3。

2to3 這個Python程序試圖將2.x源代碼轉換成3。它通常與Python解釋器一起安裝為腳本。如果你只想看看它對源代碼進行的每次變更有何差異,不用編寫任何更改就可以運行該程序。注意這不完美,你可能仍需要手動修復一些代碼。

《支持Python 3:深入指南》這份免費的開源電子書可指導你逐步完成添加Python 3支持的過程。本電子書解釋了你可能遇到的一些常見遷移問題,並列出了使用Python 3中的新功能改進源代碼的方法。

Six 是一個Python 2和3兼容庫,讓開發人員方便編寫與Python 2和3都兼容的代碼。使用該庫,開發人員可以選擇使用哪個版本的Python解釋器來運行代碼。如果你決定使用該庫,確保代碼表明了這一點:Python版本號可能很快增加到4.0(截至本文發稿時最新版本為3.7.4)。

利用他人的經驗來幫助你——很多人已講述了移植代碼庫方面的經驗。Dropbox在2018年將代碼庫遷移到Python 3,撰寫了一篇博文詳細介紹了經驗。

Python官網還提供了你可能覺得有用的說明文檔。

遷移不是一種選擇

如果無法將代碼庫遷移到Python 3,另一種選擇是出錢請商業公司為你支持Python 2。

至少有一家公司已經宣布推出Python 2支持軟體包和Python 2第三方軟體包。

一些Linux發行版包含Python 2,報廢后仍會得到支持。比如說,CentOS 7和Debian 10都使用Python 2,一直支持到2024年,但不知道到時這種支持是什麼樣的。

改進的機會

維護是任何軟體開發生命周期(SDLC)的重要環節。該環節的一方面是改進軟體性能、增強安全性,這兩者都可以通過升級到Python 3來實現。

換句話說,如果你仍在使用Python 2,這正是改進你如何管理軟體依賴項,並盡量減少安全債務的大好機會。

不要忽視風險

我們NCSC始終強調打補丁的重要性。打補丁並非總是易事,但這是你為了確保技術安全所能做的最基本工作之一。

WannaCry勒索軟體就是一個典例,它表明了如果你運行不受支持的軟體會發生什麼。它感染了超過230000台計算機,在全球範圍內重大破壞。最近,Equifax泄密事件導致高達達7億美元的和解。

如果決定報廢後繼續使用Python 2,你就接受了使用不受支持的軟體帶來的種種風險,卻明知道可以使用安全的版本。

但願本文有助於說服你現在是時候開始遷移到Python 3了。





[admin ]

來源:OsChina
連結:https://www.oschina.net/news/109385/time-to-shed-python-2
Python 2.x 即將終止支持,是時候和 Python 2 講再見了已經有13次圍觀

http://coctec.com/news/all/show-post-213016.html