【Python】討論:是時候停止使用 Python 3.7 了
來源:https://pythonspeed.com/articles/stop-using-python-3.7/
所以,仍有許多人使用 Python 3.7 并不奇怪, 截至 2022 年 12 月,從 PyPI 下載的包中有近 30% 是針對 Python 3.7 的, 這包括作為 CI 運行一部分的自動下載,所以這并不意味著 30% 的應用程序使用 3.7,但這仍然是很多人使用舊版本 Python 的原因。
不過,你可以延遲升級的時間有限,對于 Python 3.7,升級時間是在接下來的幾個月內(nèi), Python 3.7 將于 2023 年 6 月到期,到期后不再修復錯誤,也沒有安全修復。
Python 3.7 于 2018 年 6 月發(fā)布。正如你在 PEP 537 中所見:
錯誤修復和安全修復子版本在前兩年每 3 個月發(fā)布一次。
之后,僅根據(jù)需要發(fā)布安全修復程序。
3.7 發(fā)布后 5 年將停止發(fā)布。
也就是說,2023 年 6 月是發(fā)布 Python 3.7 的最后一個月, 從 2023 年 7 月開始,如果存在安全漏洞,Python 開發(fā)團隊將不再修復。
對安全修復的需求是真實的:3.7.9 之后的所有版本都是由于安全修復。撰寫本文時的最新版本 Python 3.7.16 已于 2022 年 12 月 6 日發(fā)布,其中包含 5 個不同的安全修復程序,從潛在的拒絕服務攻擊到緩沖區(qū)溢出。
一些 Linux 發(fā)行版保證在已知時間段內(nèi)提供長期支持,包括安全錯誤修復, 如果你使用的是這些發(fā)行版之一,并且它包含 Python 3.7,那么你可以依賴該發(fā)行版來提供安全修復,即使 Python 開發(fā)團隊不會這樣做。
所以理論上,你還不需要升級, 但在實踐中,有一些警告。
大多數(shù)發(fā)行版中不包含 Python 3.7
RedHat 和克隆版不在任何版本中包含 Python 3.7。
Ubuntu 18.04 確實有 Python 3.7 作為附加組件,但它是 universe 附加組件包的一部分,因此尚不清楚安全支持會有多好;據(jù)推測,universe 包安全更新依賴于社區(qū)更新, 最后一次安全更新是在 2021 年 12 月,較新的 LTS Ubuntu 版本(20.04、22.04)不包括 Python 3.7。
Debian 10(“Buster”)包括 Python 3.7,但 Debian 11 不包括。
Linux 發(fā)行版不會向后移植所有安全修復程序,只會向后移植那些最重要的:
即使是現(xiàn)在,當 Python 維護者自己提供錯誤修復時,Python 3.7.16 也有許多安全修復沒有包含在 Debian 維護的版本中。
Ubuntu 上一次針對 Python 3.7 的安全更新是在 2021 年 12 月,盡管此后已經(jīng)進行了多次安全更新。
當然,長期支持只會持續(xù)有限的時間:
Debian Buster 將于 2024 年 6 月結束其自身的安全更新,因此這只會讓你多花一年時間。
Ubuntu 18.04 將于 2023 年 4 月結束標準安全更新;之后,你需要付費才能獲得安全更新。
你的依賴項將停止獲取更新
一旦 6 月到來,第三方 Python 庫和框架將開始放棄對 Python 3.7 的支持, 這意味著如果這些庫有一個嚴重的錯誤,修復程序可能無法在 Python 3.7 上使用,并且你的 Linux 發(fā)行版不會為每個現(xiàn)有的 Python 庫做反向移植。
事實上,一些庫和框架已經(jīng)開始放棄對 Python 3.7 的支持:
| Package | Latest version supports 3.7? | Last release supporting 3.7 |
|---|---|---|
| NumPy | No | April 2022 |
| Pandas | No | December 2021 |
| Django 4.x | No | Never supported |
Django 3.2 LTS 仍然支持 Python 3.7,并將在 2024 年 4 月結束自己的安全更新。
現(xiàn)在是從 3.7 升級的時候了在短期內(nèi),你的最低目標是切換到一個 Python 版本,該版本維護了可用的依賴項版本。例如,如果你依賴 Pandas,正如我們所見,最后一個與 3.7 兼容的版本是在 2021 年 12 月發(fā)布的。因此,你至少希望使用 Python 3.8。
幸運的是,Python 3 版本相當向后兼容, 所以可以做的是:
升級到 3.8。
修復你發(fā)現(xiàn)的任何錯誤。
升級到 3.9,修復所有錯誤。
重復直到你使用 Python 3.10 或從 2023 年 1 月左右開始使用 Python 3.11。
(完)
往期精彩回顧
適合初學者入門人工智能的路線及資料下載 (圖文+視頻)機器學習入門系列下載 機器學習及深度學習筆記等資料打印 《統(tǒng)計學習方法》的代碼復現(xiàn)專輯 機器學習交流qq群955171419,加入微信群請掃碼
