web-dev-qa-db-fra.com

Pourquoi python 3 n'est-il pas binaire par défaut python?

Je tape python dans une fenêtre de terminal. Je reçois Python 2.7 et non Python 3.5. Selon la documentation, Python 3.5 devrait être préchargé.

42
givonz

Je ne sais pas quels "docs" vous lisez ni ce qu'ils disent, mais le /usr/bin/python est juste un lien symbolique vers la version par défaut de python, dans ce cas 2.7, qui résulte du simple fait de saisir python sur le terminal. Ceci est le résultat de PEP 394 qui définit cela

  • pour le moment, toutes les distributions doivent s'assurer que python fait référence à la même cible que python2.

type python et file /usr/bin/python le confirmeront.

La raison de cet arrangement autre que la convention est que le paquet source python-default par défaut dans Xenial est la version 2.7.11 , le lien symbolique python pointe donc sur cette version.

Pour utiliser python 3, vous devez être explicite et taper python3 dans la ligne de commande, ce qui est recommandé au cas où vous auriez besoin d'une version spécifique. Vous pouvez également le faire avec python 2, en tapant python2. Ubuntu inclut les deux versions python 2 et 3 par défaut sur toutes les versions actuelles.

Il y a plans pour tout migrer vers python et le marquer comme valeur par défaut.

56
Braiam

Pour obtenir le Python 3.5 REPL ou exécuter un script compatible, tapez python3. Cela permet de maintenir la compatibilité avec tout l'héritage python 2.x (qui a toujours été et restera lié à pythonname__).

Le tiret peut trouver pythonsi vous configurez un fichier .desktop pour ce fichier (dans ~/.local/share/applications/), pour ouvrir un terminal et démarrer le REPL par exemple. Il n'y a pas d'environnement d'interface graphique REPL par défaut pour Python, et les attentes normales en matière d'interface sont que l'utilisateur accède au terminal.

La conversation par défaut de python 3.5 étant la valeur par défaut, les responsables portent tous les scripts système de python 2.x à python 3.x, et non pas python 3 remplacerait python 2 dans tous les cas.

10
Andrew Keech

Vous supposez que le Python par défaut devrait être disponible sous le nom pythonname__. Cette hypothèse est fausse.

Sur un système livré avec Python 3 "préchargé" et aucun Python 2, il n'y aura que python3 et pas pythonname__.

Le code écrit pour Python 3 devrait toujours rechercher un interpréteur appelé python3. Le code écrit pour Python _ 2 recherchera historiquement pythonname__.

Il pourrait arriver un moment, peut-être dans quelques décennies, où presque personne ne se souviendra de Python 2, lorsque pythonpourrait commencer à faire référence à python3. Ce serait purement par commodité, et peut et ne doit pas être fait prématuré, voire pas du tout! Il n'y a pas de hâte, à cause de l'impact suivant:

Les "anciens systèmes" actuels ne connaîtront pas python2, seulement pythonname__, il est donc parfaitement logique de garder le code Python 2 à la recherche de pythonname__. C'est la raison pour laquelle pythondoit faire référence à Python 2 pour "tant que le code Python 2 existe".

Le nouveau code écrit pour Python 2, si cela a du sens, peut parfaitement rechercher pythonname__. Il pourrait également rechercher python2, s'il est conçu pour s'exécuter uniquement sur Python 3 systèmes bien conscients et bien entretenus (qui devrait offrir un tel lien).

L'avantage du code Python 2 utilisant python2 serait qu'il n'aurait pas besoin d'être modifié une fois que pythonaurait commencé à faire référence à python3, ce qui pourrait ne jamais arriver, ou une fois que pythonavait disparu, ce qui pouvait ou non se produire. (Cela pourrait devenir réalité si le code Python 2 s'éteignait après que l'hypothétique Python 4 devienne populaire avec son interpréteur python4. - Parce que le laisser pointer sur python3 ou python4 serait à la fois source de confusion. )

4
Robert Siemer

Python les deux versions 2.x, 3.x sont disponibles. si vous appelez python comme il est pointé sur python 2.x, il chargera python 2.x

L'image ci-dessous vous aidera.

enter image description here

2
rɑːdʒɑ

Python 3.x devrait fonctionner avec 16.04 - En fait, cela fonctionnera définitivement. Ubuntu 14.04 et Python 3.4.3 - Tout ce que vous avez à faire pour le tester est de taper python3 et il devrait vous indiquer la version que vous utilisez.

2
Danny