Es ist an der Zeit, Python 3.7 nicht mehr zu verwenden

Ein Upgrade auf eine neue Python-Version ist eine Arbeit, die den Benutzern Ihrer Software nicht unbedingt zugute kommt, da sich die Benutzer um Funktionen und Fehlerbehebungen kümmern und nicht darum, wie aktuell Sie sind.

Es ist also nicht verwunderlich, dass viele Leute immer noch Python 3.7 verwenden, da im Dezember 2022 fast 30 % der von PyPI heruntergeladenen Pakete für Python 3.7 bestimmt sind, und dies schließt automatische Downloads als Teil von CI-Läufen ein, also bedeutet dies nicht etwa 30 % der Anwendungen verwenden 3.7, aber das ist immer noch der Grund, warum viele Leute ältere Versionen von Python verwenden.

Es gibt jedoch eine Grenze, wie lange Sie das Upgrade verschieben können. Für Python 3.7 ist die Upgrade-Zeit in den nächsten Monaten. Python 3.7 läuft im Juni 2023 aus, danach gibt es keine Fehlerbehebungen und keine Sicherheitsfixes mehr.

Python 3.7 wurde im Juni 2018 veröffentlicht. Wie Sie in PEP 537 sehen können:

  • Bugfix- und Sicherheitsfix-Subreleases werden in den ersten zwei Jahren alle 3 Monate veröffentlicht.

  • Danach werden Sicherheitsfixes nur nach Bedarf veröffentlicht.

  • 3.7 wird die Veröffentlichung 5 Jahre nach seiner Veröffentlichung einstellen.

Mit anderen Worten, Juni 2023 ist der letzte Monat für die Veröffentlichung von Python 3.7, und ab Juli 2023 werden Sicherheitslücken vom Python-Entwicklungsteam nicht mehr behoben.

Der Bedarf an Sicherheitskorrekturen ist real: Alle Versionen nach 3.7.9 sind auf Sicherheitskorrekturen zurückzuführen. Die zum Zeitpunkt des Schreibens neueste Version, Python 3.7.16, wurde am 6. Dezember 2022 veröffentlicht und enthält 5 verschiedene Sicherheitsfixes, die von potenziellen Denial-of-Service-Angriffen bis hin zu Pufferüberläufen reichen.

Einige Linux-Distributionen garantieren langfristigen Support für einen bekannten Zeitraum, einschließlich Sicherheitsfehlerbehebungen. Wenn Sie eine dieser Distributionen verwenden und sie Python 3.7 enthält, können Sie sich darauf verlassen, dass diese Distribution Sicherheitskorrekturen bereitstellt, selbst wenn The Das Python-Entwicklungsteam tut das nicht.

Theoretisch müssen Sie also noch kein Upgrade durchführen, aber in der Praxis gibt es einige Einschränkungen.

Python 3.7 ist in den meisten Distributionen nicht enthalten

  • RedHat und Klone enthalten in keiner Version Python 3.7.

  • Ubuntu 18.04 hat zwar Python 3.7 als Add-On, aber es ist Teil des Universe-Add-Ons-Pakets, daher ist unklar, wie gut die Sicherheitsunterstützung sein wird; vermutlich hängen die Sicherheitsupdates des Universe-Pakets von Community-Updates ab, letztes Sicherheitsupdate 2021 In Dezember, neuere LTS-Versionen von Ubuntu (20.04, 22.04) enthalten Python 3.7 nicht.

  • Debian 10 ("Buster") enthält Python 3.7, Debian 11 jedoch nicht.

Linux-Distributionen backportieren nicht alle Sicherheitsfixes, sondern nur die wichtigsten:

  • Selbst jetzt, wo Python-Betreuer selbst Fehlerkorrekturen bereitstellen, enthält Python 3.7.16 viele Sicherheitskorrekturen, die nicht in den von Debian verwalteten Versionen enthalten waren.

  • Das letzte Sicherheitsupdate von Ubuntu für Python 3.7 war im Dezember 2021, obwohl es seitdem mehrere Sicherheitsupdates gab.

Natürlich wird der Langzeitsupport nur eine begrenzte Zeit dauern:

  • Debian Buster wird seine eigenen Sicherheitsupdates im Juni 2024 beenden, sodass Sie damit nur ein weiteres Jahr kaufen können.

  • Ubuntu 18.04 beendet die Standard-Sicherheitsupdates im April 2023. Danach müssen Sie bezahlen, um Sicherheitsupdates zu erhalten.

Ihre Abhängigkeiten erhalten keine Updates mehr

Sobald der Juni beginnt, werden Python-Bibliotheken und -Frameworks von Drittanbietern die Unterstützung für Python 3.7 einstellen, was bedeutet, dass, wenn diese Bibliotheken einen kritischen Fehler aufweisen, der Fix möglicherweise nicht auf Python 3.7 funktioniert und Ihre Linux-Distribution nicht alle vorhandenen zurückportiert Python-Bibliothek.

Tatsächlich haben einige Bibliotheken und Frameworks damit begonnen, die Unterstützung für Python 3.7 einzustellen:

Paket Neueste Version unterstützt 3.7? Letzte Version mit Unterstützung für 3.7
NumPy NEIN April 2022
Pandas NEIN Dezember 2021
Django 4.x NEIN Nie unterstützt

Django 3.2 LTS unterstützt weiterhin Python 3.7 und beendet seine eigenen Sicherheitsupdates im April 2024.

Jetzt ist die Zeit für ein Upgrade von 3.7. Kurzfristig besteht Ihr Mindestziel darin, auf eine Python-Version umzusteigen, die verwendbare Versionen von Abhängigkeiten beibehält. Wenn Sie beispielsweise auf Pandas angewiesen sind, wurde, wie wir gesehen haben, die letzte 3.7-kompatible Version im Dezember 2021 veröffentlicht. Daher möchten Sie mindestens Python 3.8 verwenden.

Glücklicherweise sind Python 3-Versionen ziemlich abwärtskompatibel, also können Sie Folgendes tun:

  • Upgrade auf 3.8.

  • Beheben Sie alle Fehler, die Sie finden.

  • Auf 3.9 aktualisiert, alle Fehler behoben.

  • Wiederholen Sie diesen Vorgang, bis Sie etwa ab Januar 2023 Python 3.10 oder Python 3.11 verwenden.

おすすめ

転載: blog.csdn.net/weixin_38037405/article/details/128782918