對於不願(或無法)升級到版本3的Python用戶,還有另一個動機:python.org發布了Python 2.7.18,這是Python 2的絕對最新正式版本。
儘管在功能方面並沒有增加太多,但它確實是一個裡程碑。此版本是在對版本2的正式支持(今年1月1日)終止之後發布的,並作為最終通知。即使出現重大安全問題,也不會發布進一步的版本。因此,如果您一直在等待遷移,那麼現在是將計劃付諸實踐的好時機。
Python的當前版本為3.8.2,因為自2008年以來一直在積極開發版本3。但是,由於兩個版本不兼容,因此採用率一直很慢。Vicki Boykis報告說,2019年9月從PyPI下載的所有軟體包中有40%用於2.7版本。代碼的移植並非易事,特別是在擁有大量代碼庫的組織中。Dropbox從頭到尾用了三年時間。Instagram用了10個月。
最終的倒計時已經推遲了五年。當您考慮人們使用的庫時,最大的問題(兩個版本之間的不兼容性)被放大了。圍繞Python語言建立了巨大的庫和工具生態系統,因此任何項目都需要訪問更新的庫,然後他們才可以考慮升級其主要項目代碼。
根據您的需求,這可能不會促使您升級。如果您在開放式伺服器上運行Python,則可能會出現一些安全問題,因此您可能需要暫停一下。到目前為止,Python已修復了其庫中發現的所有重大安全漏洞,其中包括影響其`ssl'實現的一個安全漏洞。從現在開始發現的新缺陷不會發生。
但是,運行本地腳本的用戶可以使用自己喜歡的任何方式。PyPy是Python的替代實現,已同意永遠支持版本2。用數學方法處理大量數據的用戶可能會喜歡它的速度提高並堅持使用舊版本。公平地說,Python從來都不關乎速度。這是一種解釋型語言,因此通常會比同等的C程序慢。
即使沒有官方支持,Python 2也可能會通過社區的努力獲得安全更新。諸如PyPy和Tauthon之類的替代實現可以遵循openJDK模型:它們已經更新了Java版本6、7和8的實現,這些版本都已達到使用壽命。如果在Python 2中發現了新的安全漏洞,則這些實現可能會對其進行修補。
即使在這些替代實現之外,由於一些作業系統將Python 2作為一個完整的庫進行了交付,Python 2仍可能繼續接收更新。紅帽已承諾在2024年6月之前對其提供支持。Debian正在積極嘗試刪除它,但可能會在2024年之前保持支持。
但這並不意味著您應該等待。任何閃亮的新Python庫都可能會用Python 3編寫。因此,如果您想充分利用開發中的生態系統,則應立即進行升級。當殺手級安全漏洞進入網際網路時,您不想被迫升級。
在學術界,Python 2可能會持續數十年,就像COBOL在政府和工業界的許多部門所做的那樣。由於它強大的數據操作和可視化功能,它在該國變得非常流行。有趣的是,研究人員正在使用Python 2啟動新項目。一旦項目結束,為研究項目生成的腳本通常會過時。為什麼要為已經完成的項目更新某些內容?
但是,如果您是一位在3之上教授Python 2的教育家,那會對您的學生造成傷害。Python 3將適應不斷變化的軟體工程需求,對新概念和用例做出反應,而Python 2將大部分凍結為琥珀色。
因此,儘管Python 2可能會在將來的某個時間使用,但這標誌著它的最後一章。很有可能在不久的將來,您需要繼續使用Python3。這可能是一件好事,因為Python 3仍然是一種積極開發的語言。在Python 2的末尾舉起一杯(或一個類),並考慮重構代碼以利用即將出現的新功能。