48 votes

Pourquoi Python 2.7 est-il toujours la version par défaut de Python dans Ubuntu ?

Selon la documentation officielle de Python, la prise en charge de Python2.7 prendra fin prochainement.

DÉPRÉCARISATION : Python 2.7 arrivera en fin de vie le 1er janvier 2020. Veuillez mettre à jour votre Python car Python 2.7 ne sera plus maintenu après cette date. Une prochaine version de pip ne prendra plus en charge Python 2.7. Plus de détails sur le support de Python 2 dans pip, peuvent être trouvés à l'adresse suivante https://pip.pypa.io/en/latest/development/release-process/#Python-2-support

Pourquoi Ubuntu n'utilise-t-il pas Python3 par défaut dans sa prochaine version ?

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="19.04 (Disco Dingo)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 19.04"
VERSION_ID="19.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=disco
UBUNTU_CODENAME=disco

$ python
Python 2.7.16 (default, Apr  6 2019, 01:42:57) 
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.

53voto

Kulfy Points 16173

Selon la notes de publication de Bionic Beaver :

Python 2 n'est plus installé par défaut. Python 3 a été mis à jour vers la version 3.6. Il s'agit de la dernière version LTS à inclure Python 2 dans la version principale.

Et l'affirmation ci-dessus est vraie. Python 2 n'est pas installé par défaut dans la version 18.04 et les versions ultérieures. Ubuntu a déjà transféré presque tous ses projets de Python 2 à Python 3. Par exemple, selon notes de publication de Disco Dingo :

Samba a été mis à jour vers la version 4.10.x, et l'un des principaux changements est le suivant python3 support. Dans Disco, samba et ses dépendances sont désormais toutes compatibles avec python3, à l'exception de tdb. tdb construit toujours un paquet python2, à savoir Python-tdb, mais tous les autres, y compris samba lui-même, sont compatibles avec python3.

De plus, avant même la sortie d'Ubuntu 18.04, Ubuntu/Canonical a commencé à demander aux développeurs de passer à Python 3 pour les raisons suivantes la fin est proche . A partir de Python - Ubuntu Wiki :

Tous les développements Ubuntu/Canonical devraient cibler Python 3 dès maintenant, et tout nouveau code devrait être exclusivement Python 3. Si vous ne pouvez pas le faire à cause de votre pile de dépendances, discutons-en.

Il semble que sur votre système, Python 2 ait été installé intentionnellement ou peut-être en tant que dépendance d'un autre paquetage dont le développeur n'est pas passé à Python 3. Vous pouvez vérifier les paquets que vous avez installés et qui dépendent de Python 2 en exécutant la commande suivante

apt rdepends python --installed

La raison pour laquelle Python 2 est invoqué lorsque python est exécuté se trouve dans l'un des historique point de PEP 394 -- La commande "Python" sur les systèmes de type Unix :

En python doit toujours invoquer la commande Python 2 (pour éviter les erreurs difficiles à diagnostiquer lorsque le code Python 2 est exécuté sur Python 3).

Sur les versions plus récentes, comme la 20.04, Ubuntu fournit deux paquets :

python-is-python2/focal,focal 2.7.17-4 all
  symlinks /usr/bin/python to the DEPRECATED python2

python-is-python3/focal,focal 3.8.2-4 all
  symlinks /usr/bin/python to python3

Comme son nom l'indique, le plus tôt est le mieux. python pour invoquer python2 et plus tard invoqueront python3 . Si vous n'avez pas d'application qui dépend de Python 2, vous pouvez installer python-is-python3 pour faire python pour invoquer python3 . Vous pouvez également modifier le shebang du script en /usr/bin/python3 pour faire script afin d'utiliser directement python3 en tant qu'interprète.

1voto

yota Points 141

A ma connaissance, seul arch linux l'a fait : appeler python3 à partir de la valeur par défaut python commande. Malgré les PEP 394 recommandation.

Il peut être modifié en /usr/bin en redéfinissant les liens entre python , pythonX y pythonX.Y . Mais préparez-vous à faire face à de nombreux bugs, puisque tous vos scripts en python2 devront avoir un scripts bang explicite :

#!/usr/bin/env python2

Un Shell bang qui est rarement utilisé dans les anciens Shell.

0voto

Arshad Syed Points 101

Je vous fais part de mon expérience en temps réel,

mon système pointe par défaut sur python2.7 alors que j'ai installé python3.6 sur ma machine

Mais lorsque j'essaie de télécharger de nouveaux paquets pour python3.6, le téléchargement se fait avec python2.7 par défaut.

Je suis donc tombé sur ce pyenv,

J'ai installé le pyenv

après l'installation

 $ pyenv install --list
 $ pyenv global

pointe vers le système par défaut (python2.7)

a installé python3.6

$ pyenv install 3.6.9

passage de python2.7 à python3.6

$ pyenv global 3.6.9

Supposons que vous souhaitiez installer le paquetage relatif à python2.7 et modifier l'environnement Python.

$ pyenv global 2.7.0

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X