Vers la retraite de Python2

introduction

Cela fait environ 10 jours cette année. En même temps que la fin des années 2010, une ère se terminera dans le monde de Python. Python 2.7, qui est supporté depuis longtemps, prendra fin le 1er janvier 2020 (EOL: End of Life). En d'autres termes, après cela, même si un bogue est trouvé, une version corrigée ne sera pas publiée. Python 2.7 sera le dernier de la série 2 et Python 2 prendra sa retraite.

La première version de Python 2.7 est sortie le 3 juillet 2010, donc je suis actif depuis neuf ans et demi. Python 3 à l'époque était la version 3.1. À partir de là, le nombre de versions a atteint 3,8 et le nombre de versions mineures a dépassé Python2.

Au cours des 20 ans d'histoire de Python2, 2.7 représentait la moitié de cela, ce qui était une situation inhabituelle car Python3 était incompatible avec Python2 et mettait beaucoup de temps à migrer. Python 2.8 n'était pas censé sortir comme déclaré dans PEP-404, il reste donc Python 2.7 J'ai continué à tirer. En fait, ma première retraite remonte à 2015, mais même en 2014, la transition ne progressait pas du tout, et j'ai reporté l'EOL de cinq ans parce que j'ai dit «ce n'est pas bon».

Au départ, Python3 avait des problèmes de performances, et j'étais l'un de ceux qui sont restés longtemps avec Python2. Au fil du temps, ces problèmes ont été progressivement résolus et les utilisateurs n'ont commencé à migrer que lorsque des bibliothèques bien connues sont devenues compatibles Python 3. Il n'est pas difficile d'imaginer les difficultés de ceux qui ont réussi à prendre leur retraite en 10 ans, mais on m'a rappelé que même si c'est bien, les gens ne déménageront que si les avantages de la transition dépassent les coûts associés à la transition. Je vais.

La fin du support de Python 2 ne signifie pas qu'il sera indisponible immédiatement. Par contre, même s'il y a des bugs ou des problèmes de sécurité, il n'est pas possible d'utiliser un logiciel qui n'est pas mis à jour pour un usage commercial, et même s'il n'est pas commercial, il y a la même possibilité de dommage, donc le passage à Python 3 n'a pas attendu Je pense.

Je pense que beaucoup de gens disent que le Python qu'ils utilisent est déjà la version 3, mais une chose qui est souvent négligée est lorsqu'ils sont utilisés indirectement. Si de nombreux outils s'appuient sur Python et que vous les avez installés, par exemple via Package Manager, vous pouvez extraire Python2. Par exemple, node.js et vim, qui ne semblent pas liés à première vue, utilisent également python. Par conséquent, les administrateurs de chaque gestionnaire de packages travaillent dur pour déplacer les packages qui dépendent de Python2 vers Python3. J'ai étudié la situation concernant Homebrew et Debian, alors j'aimerais en parler.

Homebrew

Dans Homebrew, le package python fait référence à python3 et python2 est fourni sous le nom du package python @ 2. Ce paquet python @ 2 devrait être effacé au début de la nouvelle année comme ceci Pull Request a déjà été émis. Cependant, certains packages en dépendent encore et doivent être résolus en premier. Il y a un problème pour cela sur ici, mais quand je le regarde, certains paquets ne sont toujours pas pris en charge.

Si vous vérifiez la situation actuelle, cela ressemblera à ceci.

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

Si vous voulez savoir si l'un de ceux-ci inclut ce que vous avez installé, essayez brew uses --installed python @ 2. J'avais installé mysql-utilities. Apparemment, il n'y a plus de mises à jour, et ici suggère que vous êtes encouragé à passer au shell MySQL, alors j'aimerais l'essayer.

De plus, le python standard de MacOS semble être 2.7, même dans la dernière Catalina. Cependant, lorsque je le lance, le message "Je ne recommande pas d'utiliser Python 2.7!" Apparaît. On dit qu'il sera effacé dans le futur, mais je me demande s'il restera tel quel jusqu'à la sortie de la prochaine version.

Debian

Debian essaie également de supprimer Python2. Cependant, Debian a une longue histoire et un grand nombre de paquets, ce qui complique les choses. Les paquets affectés par la suppression de Python2 sont enregistrés dans le système de gestion des bogues de Debian et sont marqués comme py2removal (Bugs tagged py2removal. .cgi? tag = py2removal; users = [email protected])), le nombre total est de 3,443. Parmi ceux-ci, 1 960 ont été résolus. Les 1 483 paquets restants sont toujours ouverts.

Ceux qui sont rarement utilisés ou qui n'ont pas été maintenus en amont (développeur) sont sujets à effacement, et beaucoup ont déjà été effacés. Ainsi, les 1 500 paquets restants contiennent des éléments importants. En particulier, il y en a plus de 600 qui sont considérés comme "graves" (les plus graves), et python2 ne sera probablement pas effacé à moins que ceux-ci ne soient résolus. Il n'y a pas d'autre choix que de regarder la tendance combien de temps cela prendra.

Un rapide coup d'œil sur la liste ouverte révèle des noms familiers. Par exemple, «trac». Il s'agit d'un outil de gestion de tickets, pour ainsi dire, une version Python de redmine. J'avais l'habitude de l'utiliser il y a longtemps, mais j'ai entendu le nom après un long moment. En amont, une nouvelle version (1.4) est sortie en août de cette année, mais elle n'est pas encore compatible avec python3. En regardant la feuille de route, il semble qu'elle sera prise en charge dans le prochain 1.6, mais ce n'est pas du tout à temps. Le développement de Trac lui-même se fait sur Trac https://trac.edgewall.org/wiki, mais je ne peux pas nier qu'il est vieux. Je pensais que ce serait plus facile si je le faisais sur Github, mais la signification de ce Trac serait perdue en premier lieu (rires). Après tout, cela me fait réaliser que les logiciels ont également une durée de vie limitée.

De plus, la communication avec chaque responsable de paquet est répertoriée dans le ticket de bogue, mais elle est assez violente. Par exemple, Ticket pour un paquet appelé Calibre dit: "Vous ne pouvez rien faire du tout." "Ne dispersez pas le FUD (peur, anxiété, doute)" ou quelque chose d'assez fort. C'est un travail inutile qui ne serait pas fait si Python2 pouvait être utilisé tel quel, donc je ne suis pas sûr, mais cela ressemble aux avantages et aux inconvénients de laisser Python2 en parallèle avec Python3 pendant longtemps.

L'avenir de Python 2.7

Qu'arrivera-t-il à Python 2.7 après janvier? En fait, PEP-373 a un calendrier de publication dans le futur.

--2.7.18 Code Freeze ... Janvier 2020 --2.7.18 Release candidate ... Début avril 2020 --2.7.18 Sortie officielle ... mi-avril 2020

Je pensais que cela n'avait pas été arrêté en janvier, mais il semble qu'il n'y ait qu'une seule dernière version de maintenance. Homebrew abandonnera plus Python @ 2, donc le prochain 2.7.18 pourrait être une version fantôme.

Résumé

J'ai vérifié l'état de préparation de Homebrew et Debian en raison du retrait de Python2. Je voudrais garder un œil sur ce qui se passe réellement après cela.

Vous pouvez voir le compte à rebours avant la retraite sur https://pythonclock.org/.

Recommended Posts

Vers la retraite de Python2
le zen de Python
À propos des fonctionnalités de Python
Le pouvoir des pandas: Python
L'histoire de Python et l'histoire de NaN
[Python] La pierre d'achoppement de l'importation
First Python 3 ~ Le début de la répétition ~
Existence du point de vue de Python
pyenv-changer la version python de virtualenv
[Python] Comprendre le potentiel_field_planning de Python Robotics
Revue des bases de Python (FizzBuzz)
À propos de la liste de base des bases de Python
Apprenez les bases de Python ① Débutants élémentaires
Vérifiez le comportement du destroyer en Python
[Python3] Comprendre les bases de Beautiful Soup
Passez le chemin du module python importé
Notes d'apprentissage depuis le début de Python 1
Vérifier l'existence du fichier avec python
À propos de l'environnement virtuel de Python version 3.7
[Python3] Réécrire l'objet code de la fonction
Je ne connaissais pas les bases de Python
Les bases de Python ①
Le résultat de l'installation de python sur Anaconda
Bases de python ①
[Python] Essayez pydash de la version Python de lodash
[python] Vérifier la consommation de mémoire des variables
Vérifiez le chemin du module importé Python
L'histoire de la manipulation des variables globales Python
Copie de python
[python] [meta] Le type de python est-il un type?
Principes de base pour exécuter NoxPlayer en Python
Pandas du débutant, par le débutant, pour le débutant [Python]
Le modèle de projet Python auquel je pense.
À la recherche du FizzBuzz le plus rapide en Python
Cours de base Python (à la fin de 15)
Définissez le nom du processus du programme Python
[Python] Récupère le code de caractère du fichier
L'histoire du traitement A du blackjack (python)
Apprenez intuitivement la refonte de Python np
Note Python: le rôle secret de Kamma
Notes d'apprentissage depuis le début de Python 2
Introduction de Python
Traduction japonaise: PEP 20 - Le Zen de Python
[Python3] Comprendre les bases des opérations sur les fichiers
Récupérer le contenu de git diff depuis python
[Python] Lire le code source de Bottle Part 2
[python] Vérifier les éléments de la liste tous, tous
L'histoire selon laquelle le coût d'apprentissage de Python est faible
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Préparer l'environnement d'exécution de Python3 avec Docker
Résumé des différences entre PHP et Python
Mathématiques Todai 2016 résolues avec Python
Le contenu du didacticiel Python (chapitre 5) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 4) est résumé dans une puce.
[Python] Obtenir / modifier l'étiquette d'échelle de la figure
Le contenu du didacticiel Python (chapitre 2) est résumé dans une puce.