Auf dem Weg zum Ruhestand von Python2

Einführung

Es ist ungefähr 10 Tage in diesem Jahr gewesen. Gleichzeitig mit dem Ende der 2010er Jahre wird eine Ära in der Welt von Python enden. Python 2.7, das seit langem unterstützt wird, endet am 1. Januar 2020 (EOL: End of Life). Mit anderen Worten, selbst wenn danach ein Fehler gefunden wird, wird keine feste Version veröffentlicht. Python 2.7 wird das letzte in der 2er-Reihe sein und Python 2 wird in den Ruhestand gehen.

Die erste Version von Python 2.7 wurde am 3. Juli 2010 veröffentlicht, daher bin ich seit neuneinhalb Jahren aktiv. Python 3 war zu dieser Zeit Version 3.1. Von dort aus hat die Anzahl der Versionen 3,8 erreicht und die Anzahl der Nebenversionen hat Python2 überschritten.

In der 20-jährigen Geschichte von Python2 machte 2.7 die Hälfte davon aus. Dies war eine ungewöhnliche Situation, da Python3 nicht mit Python2 kompatibel war und die Migration lange dauerte. Python 2.8 sollte nicht wie in PEP-404 deklariert erscheinen, daher bleibt es Python 2.7 Ich zog weiter. Eigentlich war mein erster Ruhestand im Jahr 2015, aber selbst im Jahr 2014 kam der Übergang überhaupt nicht voran, und ich habe EOL um fünf Jahre verschoben, weil ich sagte, "das ist nicht gut".

Anfangs hatte Python3 Leistungsprobleme, und ich war einer von denen, die lange Zeit bei Python2 blieben. Im Laufe der Zeit wurden diese Probleme schrittweise behoben, und die Migration begann erst, als bekannte Bibliotheken Python 3-kompatibel wurden. Es ist nicht schwer, sich die Nöte derer vorzustellen, die es geschafft haben, in 10 Jahren in den Ruhestand zu gehen, aber ich wurde daran erinnert, dass Menschen, selbst wenn es gut ist, nicht umziehen werden, es sei denn, die Vorteile des Übergangs übersteigen die mit dem Übergang verbundenen Kosten. Ich werde.

Das Ende der Python 2-Unterstützung bedeutet nicht, dass sie nicht sofort verfügbar ist. Auf der anderen Seite ist es nicht möglich, Software zu verwenden, die nicht für den kommerziellen Gebrauch aktualisiert wurde, selbst wenn es Fehler oder Sicherheitsprobleme gibt, und selbst wenn sie nicht kommerziell ist, besteht die gleiche Möglichkeit eines Schadens, sodass der Wechsel zu Python 3 nicht gewartet hat. Ich denke.

Ich denke, viele Leute sagen, dass der Python, den sie verwenden, bereits Version 3 ist, aber eine Sache, die oft übersehen wird, ist, wenn sie indirekt verwendet werden. Wenn viele Tools auf Python basieren und Sie sie installiert haben, z. B. über einen Paketmanager, ziehen Sie möglicherweise Python2. Beispielsweise verwenden node.js und vim, die auf den ersten Blick nicht miteinander verbunden zu sein scheinen, auch Python. Infolgedessen arbeiten die Administratoren jedes Paketmanagers hart daran, Pakete, die von Python 2 abhängen, nach Python 3 zu verschieben. Ich habe die Situation in Bezug auf Homebrew und Debian untersucht und möchte darüber schreiben.

Homebrew

In Homebrew bezieht sich das Paket "python" auf python3, und python2 wird unter dem Paketnamen "python @ 2" bereitgestellt. Dieses python @ 2 -Paket sollte zu Beginn des neuen Jahres [wie folgt] gelöscht werden (https://github.com/Homebrew/homebrew-core/pull/47750). Die Pull-Anfrage wurde bereits ausgestellt. Einige Pakete hängen jedoch noch davon ab und müssen zuerst aufgelöst werden. Es gibt ein Problem dafür unter hier, aber wenn ich es mir anschaue, werden einige Pakete immer noch nicht unterstützt.

Wenn Sie die aktuelle Situation überprüfen, sieht es so aus.

$ brew uses python@2
git-remote-hg     ipython@5         mysql-utilities   pwntools          terminator
headphones        mkvtomp4          offlineimap       pygobject         volatility
hg-flow           molecule          ooniprobe         redo              vte

Wenn Sie wissen möchten, ob eines dieser Elemente das enthält, was Sie installiert haben, versuchen Sie, "Brew verwendet - installiertes Python @ 2". Ich hatte "MySQL-Dienstprogramme" installiert. Anscheinend gibt es keine weiteren Updates, und hier schlägt vor, dass Sie aufgefordert werden, zur MySQL-Shell zu wechseln, daher würde ich dies gerne tun.

Darüber hinaus scheint MacOS Standard Python auch in der neuesten Catalina 2.7 zu sein. Wenn ich es starte, erscheint jedoch die Meldung "Ich empfehle nicht, Python 2.7 zu verwenden!". Es wird gesagt, dass es in Zukunft gelöscht wird, aber ich frage mich, ob es so bleiben wird, wie es ist, bis die nächste Version herauskommt.

Debian

Debian versucht auch, Python2 zu entfernen. Debian hat jedoch eine lange Geschichte und eine große Anzahl von Paketen, was die Dinge komplizierter macht. Die Pakete, die von der Entfernung von Python2 betroffen sind, sind im Fehlerverwaltungssystem von Debian registriert und als "py2removal" ([Fehler mit py2removal ") (https://bugs.debian.org/cgi-bin/pkgreport) gekennzeichnet. .cgi? tag = py2removal; users = [email protected])), die Gesamtzahl beträgt 3.443. Davon wurden 1.960 gelöst. Die restlichen 1.483 Pakete sind noch offen.

Diejenigen, die selten verwendet werden oder die nicht vorgelagert wurden (Entwickler), werden gelöscht, und viele wurden bereits gelöscht. Die verbleibenden 1.500 Pakete enthalten also einige wichtige Dinge. Insbesondere gibt es mehr als 600, die als "schwerwiegend" (die schwerwiegendsten) eingestuft werden, und Python2 wird wahrscheinlich nicht gelöscht, wenn diese nicht behoben werden. Es bleibt nichts anderes übrig, als den Trend zu beobachten, wie lange es dauern wird.

Ein kurzer Blick auf die offene Liste zeigt einige bekannte Namen. Zum Beispiel "trac". Dies ist sozusagen ein Ticket-Management-Tool, eine Python-Version von Redmine. Ich habe es vor langer Zeit benutzt, aber ich habe den Namen nach langer Zeit gehört. Upstream erschien im August dieses Jahres eine neue Version (1.4), die jedoch noch nicht mit Python3 kompatibel ist. Auf der Roadmap scheint es, dass es in der nächsten Version 1.6 unterstützt wird, aber es ist überhaupt nicht rechtzeitig. Die Entwicklung von Trac selbst erfolgt unter Trac https://trac.edgewall.org/wiki, aber ich kann nicht leugnen, dass es alt ist. Ich dachte, es wäre einfacher, wenn ich es auf Github machen würde, aber dann würde die Bedeutung dieses Trac an erster Stelle verloren gehen (lacht). Schließlich wird mir klar, dass Software auch eine begrenzte Lebensdauer hat.

Auch die Kommunikation mit jedem Paketbetreuer ist im Bug-Ticket aufgeführt, aber ziemlich gewalttätig. In Ticket für ein Paket namens Calibre heißt es beispielsweise: "Sie können überhaupt nichts tun." "Zerstreue nicht FUD (Angst, Angst, Zweifel)" oder etwas, das ziemlich stark ist. Es ist eine verschwenderische Arbeit, die nicht erledigt werden würde, wenn Python2 so wie es ist verwendet werden könnte, daher bin ich mir nicht sicher, aber es scheint die Vor- und Nachteile zu sein, Python2 für eine lange Zeit parallel zu Python3 zu lassen.

Die Zukunft von Python 2.7

Was wird nach Januar mit Python 2.7 passieren? Tatsächlich hat PEP-373 in Zukunft einen Veröffentlichungsplan.

--2.7.18 Code Freeze ... Januar 2020 --2.7.18 Freigabekandidat ... Anfang April 2020 --2.7.18 Offizielle Veröffentlichung ... Mitte April 2020

Ich dachte, es wurde nicht im Januar gestoppt, aber es scheint, dass es nur eine letzte Wartungsversion gibt. Homebrew wird Python @ 2 nicht mehr löschen, sodass die nächste Version 2.7.18 möglicherweise eine Phantomversion ist.

Zusammenfassung

Ich habe den Vorbereitungsstatus von Homebrew und Debian aufgrund des Ausscheidens von Python2 überprüft. Ich möchte ein Auge darauf haben, was danach tatsächlich vor sich geht.

Den Countdown bis zur Pensionierung finden Sie unter https://pythonclock.org/.

Recommended Posts

Auf dem Weg zum Ruhestand von Python2
der Zen von Python
Über die Funktionen von Python
Die Kraft der Pandas: Python
Die Geschichte von Python und die Geschichte von NaN
[Python] Der Stolperstein des Imports
Erster Python 3 ~ Der Beginn der Wiederholung ~
Existenz aus Sicht von Python
pyenv-change die Python-Version von virtualenv
[Python] Die potenzielle Feldplanung von Python Robotics verstehen
Überprüfung der Grundlagen von Python (FizzBuzz)
Informationen zur Grundlagenliste der Python-Grundlagen
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
Überprüfen Sie das Verhalten des Zerstörers in Python
[Python3] Verstehe die Grundlagen von Beautiful Soup
Übergeben Sie den Pfad des importierten Python-Moduls
Notizen vom Anfang von Python 1 lernen
Überprüfen Sie die Existenz der Datei mit Python
Informationen zur virtuellen Umgebung von Python Version 3.7
[Python3] Schreiben Sie das Codeobjekt der Funktion neu
Ich kannte die Grundlagen von Python nicht
Python-Grundlagen ①
Das Ergebnis der Installation von Python auf Anaconda
Grundlagen von Python ①
[Python] Probieren Sie pydash der Python-Version von lodash aus
[Python] Überprüfen Sie den Speicherverbrauch von Variablen
Überprüfen Sie den Pfad des importierten Python-Moduls
Die Geschichte der Manipulation globaler Python-Variablen
Kopie von Python
[Python] [Meta] Ist der Python-Typ ein Typ?
Grundlagen zum Ausführen von NoxPlayer in Python
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Die Python-Projektvorlage, an die ich denke.
Auf der Suche nach dem schnellsten FizzBuzz in Python
Python-Grundkurs (Ende 15)
Legen Sie den Prozessnamen des Python-Programms fest
[Python] Ruft den Zeichencode der Datei ab
Die Geschichte der Verarbeitung A von Blackjack (Python)
Lernen Sie intuitiv die Umformung von Python np
Python Hinweis: Die geheime Rolle von Kamma
Notizen vom Anfang von Python 2 lernen
Einführung von Python
Japanische Übersetzung: PEP 20 - Das Zen von Python
[Python3] Grundlegendes zu Dateivorgängen
Holen Sie sich den Inhalt von Git Diff aus Python
[Python] Lesen Sie den Quellcode von Flasche Teil 2
[Python] Checklistenelemente alle, alle
Die Geschichte, dass die Lernkosten von Python niedrig sind
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Zusammenfassung der Unterschiede zwischen PHP und Python
2016 Todai Mathematik mit Python gelöst
Der Inhalt des Python-Tutorials (Kapitel 5) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 4) ist in einem Aufzählungszeichen zusammengefasst.
[Python] Ruft die Skalenbezeichnung der Figur ab / bearbeitet sie
Der Inhalt des Python-Tutorials (Kapitel 2) ist in einem Aufzählungszeichen zusammengefasst.