從 Python 2 切換到 Python 3 你所需要了解的
Python 2 將在幾周內走到生命終點,這篇文章是你遷移到 Python 3 之前應該知道的。
從 2020 年 1 月 1 日開始,Python 2.7 將不再得到正式支援。在此日期之後,將會釋出一個最終錯誤修復計劃,但是僅此而已。
Python 2 的生命終點(EOL)對你意味著什麼?如果正在執行著 Python 2,你需要遷移。
是誰決定 Python 2 的生命終點?
在 2012 年,維護 Python 程式語言的團隊審查了其選項。有兩個越來越不同的程式碼庫,Python 2 和 Python 3。這兩者都很流行,但是較新的版本並未得到廣泛採用。
除了 Python 3 中完全重寫的 Unicode 支援改變了處理資料的底層方式造成的斷層,這個主要版本的變化還一次性出現了一些非向後相容的更改。這種斷層的決定成文於 2006 年。為了減輕該斷層的影響,Python 2 繼續保持了維護,並向後移植了一些 Python 3 的功能。為了進一步幫助社群過渡,EOL 日期從 2015 年延長至 2020 年,又延長了五年。
該團隊知道,維護不同的程式碼庫是必須解決的麻煩。最終,他們宣佈了一項決定:
“我們是製作和照料 Python 程式語言的志願者。我們已決定 2020 年 1 月 1 日將是我們停止使用 Python 2 的日子。這意味著在這一天之後,即使有人發現其中存在安全問題,我們也將不再對其進行改進。你應儘快升級到 Python 3。”
Nick Coghlan 是 CPython 的核心開發人員,也是 Python 指導委員會的現任成員,在他的部落格中新增了更多資訊。由 Barry Warsaw(也是 Python 指導委員會的成員)撰寫的 PEP 404 詳細說明了 Python 2.8 永遠不會面世的原因。
有人還在支援 Python 2 嗎?
提供者和供應商對 Python 2 的支援會有所不同。Google Cloud 宣佈了它計劃未來如何支援 Python 2。紅帽還宣佈了紅帽企業 Linux(RHEL)的計劃,而 AWS 宣佈了 AWS 命令列介面和 SDK 的次要版本更新要求。
你還可以閱讀 Vicki Boykis 在 Stack Overflow 撰寫的部落格文章“為什麼遷移到 Python 3 需要這麼長時間?”,其中她指出了採用 Python 3 緩慢的三個原因。
使用 Python 3 的原因
不管是否有持續的支援,儘快遷移到 Python 3 是一個好主意。Python 3 將繼續受到支援,它具有 Python 2 所沒有的一些非常優雅的東西。
最近釋出的 Python 3.8 包含 海象運算子、位置引數和自描述的格式化字串等功能。Python 3 的早期版本引入的功能,例如 非同步 IO、格式化字串、型別提示 和 pathlib,這裡只提及了一點點。
下載最多的前 360 個軟體包已遷移到 Python 3。你可以使用 caniusepython3 軟體包檢查你的 requirements.txt
檔案,以檢視你依賴的任何軟體包是否尚未遷移。
將 Python 2 移植到 Python 3 的參考資源
有許多參考資源可簡化你向 Python 3 的遷移。例如,“將 Python 2 移植到 Python 3 指南”列出了許多工具和技巧,可幫助你實現與 Python 2/3 單一原始碼的相容性。在 Python3statement.org 上也有一些有用的技巧。
Dustin Ingram 和 Chris Wilcox 在 Cloud Next ‘19上作了一個演講,詳細介紹了向 Python 3 過渡的一些動機和遷移模式。Trey Hunner 在 PyCon 2018 演講上介紹了 Python 3 最有用的功能,鼓勵你進行遷移,以便你可以利用它們。
加入我們!
距 2020 年 1 月 1 日僅有幾周了。如果你需要每天提醒一下它即將到來的時間(並且你使用 Twitter 的話),請關注 Python 2 日落倒數計時 Twitter 機器人。
via: https://opensource.com/article/19/11/end-of-life-python-2
作者:Katie McLaughlin 選題:lujun9972 譯者:wxy 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- Python開發:Python2和Python3的共存和切換使用Python
- 使用VS Code時如何切換Python版本?VS Code中如何在Python3與Python2之間自由切換?Python
- 關於在Android中使用CMake你所需要了解的一切(三)Android
- 關於在Android中使用CMake你所需要了解的一切(一)Android
- 關於在Android中使用CMake你所需要了解的一切(二)Android
- Mac切換Python版本MacPython
- python2到python3程式碼轉化:2to3Python
- Ubuntu下python版本切換UbuntuPython
- Python中如何切換GIL?Python
- 怎麼切換python版本Python
- 從NodeJS切換到Ruby on Rails - nikodunkNodeJSAI
- 如何從 Docker Desktop 切換到 ColimaDocker
- 當同時安裝Python2和Python3後,如何相容並切換使用詳解(比如pip使用)Python
- jupyter notebook中 切換不同的Python環境Python
- 實戰:如何優雅的從 Skywalking 切換到 OpenTelemetry
- 為什麼Discord從Go切換到Rust?GoRust
- ABP VNext從單體切換到微服務微服務
- 我將從VS Code切換到VS Codium
- python,那些你一定要了解的符號Python符號
- 從零到熟悉,帶你掌握Python len() 函式的使用Python函式
- python-ncm2mp3格式轉換Python
- 切換系統中多個python版本Python
- 【記錄】Ubuntu18.04 切換 Python 版本UbuntuPython
- Mac環境下WingIDE切換python版本MacIDEPython
- 如何在cmd下切換python版本使用Python
- 使用Anaconda實現Python2和Python3共存及相互轉換Python
- 你應該用 Python3.x 而非 Python2.x 的 20 個理由Python
- 為什麼我們從Yarn切換到pnpmYarnNPM
- Python2和Python3的區別Python
- Python2與Python3的區別Python
- Python 從入門到放棄——Python科普!Python
- 從VPS切換到雲伺服器的幾大理由伺服器
- MongoDB宣佈其開源許可協議從AGPLv3切換到ServerMongoDB協議Server
- Python從入門到精通Python
- Redis主從切換Redis
- 為什麼我們從RabbitMQ切換到apache kafka?MQApacheKafka
- 178-ABP VNext從單體切換到微服務微服務
- 為什麼我們從Webpack切換到Vite - ReplitWebVite