Question Comment faire pour que la commande de programme 'python' exécute Python 3?


le python commande de programme exécute Python 2. Python 3 peut être exécuté en utilisant le python3 commander. Comment Python 3 peut-il être exécuté en utilisant le python commander?


224
2017-07-17 08:04


origine


Juste un avertissement: n'essayez pas de changer le lien symbolique / usr / bin / python pour qu'il pointe vers python3 au lieu de 2.7. De nombreux programmes disponibles dans les repos Ubuntu nécessitent que / usr / bin / python soit compatible avec python 2.x. - soulsource
@soulsource, oui je suis au courant de ça. C'est pourquoi j'ai demandé s'il existe une option "mise à niveau" ou non. - Giri
Ah, j'ai maintenant ce que tu voulais dire avec la mise à niveau ... En fait, les développeurs d'Ubuntu travaillent là-dessus: wiki.ubuntu.com/Python/3 "Ubuntu 14.04 LTS a pour seul objectif d’avoir uniquement Python 3 sur les images de CD de bureau." - soulsource
Par ailleurs, toute personne venant ici parce qu’elle essaie d’apprendre comment faire de Python 3 sa valeur par défaut peut au contraire s’en servir pour rechercher des environnements virtuels (par exemple virtualenv) ou des conteneurs (par exemple, LXC ou Docker). - Kevin
En référence à l'avertissement de soulsource en haut, voir PEP 394 qui standardise les conventions de dénomination pour les co-exécutables des exécutables Python et sur lesquelles les programmeurs Python et les responsables de paquets font (et devraient) se fier. - David Foerster


Réponses:


Un moyen simple serait d'utiliser un alias. Placez ceci dans ~/.bashrc ou ~/.bash_aliases fichier:

alias python=python3

Après avoir ajouté ce qui précède dans le fichier, exécutez la commande ci-dessous:

source ~/.bash_aliases or source ~/.bashrc

Par exemple:

$ python --version
Python 2.7.6
$ python3 --version
Python 3.4.3
$ alias python=python3
$ python --version
Python 3.4.3

Pour contourner l'alias utiliser le command commande intégrée:

$ command python --version
Python 2.7.6

Une autre façon de contourner l'alias est d'utiliser \ avant la commande.

$ \python --version 
Python 2.7.6

Pour désactiver l’alias dans le shell actuel, utilisez le unalias commande intégrée:

$ unalias python
$ python --version
Python 2.7.6

258
2017-07-17 08:13



donc pas d'option "upgrade" .. ?? - Giri
@Giri Tu as dit que tu avais python3. Quoi pour une mise à niveau? - Radu Rădeanu
en fait je veux effacer 2.7 et le remplacer par 3.3. On dirait que c'est une mauvaise idée pour le moment .. - Giri
+1 il n'y a aucune raison de purger 2.7 pour pouvoir travailler avec 3.3. Comme beaucoup de logiciels dépendent encore de 2.7; il suffit de le garder autour de vous. - don.joey
@begueradj An alias est totalement différent d'un lien symbolique. - Radu Rădeanu


[Juin 2016] L'emplacement recommandé pour les informations sur la transition est officiel Ubuntu Python page.


Du Wiki Ubuntu:

Pour Ubuntu et Debian, nous avons en cours projet buts pour faire de Python 3 la valeur par défaut, préférez la version Python dans les distributions.

Ce que cela ne fait pas signifier:

  • /usr/bin/python pointera sur Python 3. Non, ça ne va pas arriver (sauf si PEP 394 préconise le contraire, ce qui est douteux dans un avenir prévisible). /usr/bin/python et /usr/bin/python2 pointera sur Python 2.7 et /usr/bin/python3 pointera vers la dernière version de Python 3 prise en charge.

  • Python 2 sera supprimé de l'archive. Non, ça ne va pas arriver. Nous nous attendons à ce que Python 2.7 reste supporté et disponible dans Ubuntu pour un temps assez long, étant donné que PEP 373 promet un support de maintenance des corrections de bogues en amont jusqu'en 2020.

Il est déconseillé de modifier le lien symbolique en raison d'autres dépendances de paquet, mais ils "ont des objectifs de projet permanents pour faire de Python 3 la version par défaut préférée de Python dans les distributions".


Pour l'utilisation de la CLI, comme @Radu Rădeanu, Je recommande de mettre un alias dans l'utilisateur ~/.bashrc, .bash_aliases fichier (les différents fichiers, y compris ~/.bash_profile, sont tous chargés ensemble et sont simplement à des fins d'organisation). Python environnements virtuels fonctionne bien aussi.

Tel que:

alias python=python3

ou

alias python='/usr/bin/python3'

Les scripts peuvent alors commencer avec quelque chose comme:

#!/usr/bin/env python

au lieu de

#!/usr/bin/python3

Je recommanderais quand même d'utiliser #!/usr/bin/python3 (ou #!/usr/bin/env python3) dans des scripts pour une compatibilité croisée plus simple.

En utilisant env est agréable pour une utilisation mixte avec des environnements virtuels.


68
2018-06-02 16:31



Cela semble être dépassé maintenant: ils ont prévu de supprimer python2 dans Xenial, mais ils ne l'ont pas fait. - OrangeDog
@OrangeDog, merci pour la mise à jour. Oui, la page wiki que j'ai citée est désormais obsolète, car plus de progrès ont été réalisés au cours des deux dernières années pour le passage à Python 3. La nouvelle page à suivre est la version officielle. Page Ubuntu Python. - Kevin
La "dernière" page est également obsolète en ce qui concerne les plans de Xenial. - OrangeDog
Je ne dirais pas que c'est "dépassé" autant que "il n'a pas été mis à jour récemment". Il semble toujours être l'emplacement actuel pour garder des messages à ce sujet. Cependant, dans les commentaires ici, j'apprécierais toute autre source récente que quiconque pourrait trouver. En ajoutant plus de sources à ma réponse, pourquoi ne pas apporter le changement à juste python, n'est pas vraiment pertinent tant que la conversion n'est pas terminée. Même dans ce cas, cela pourrait ne plus être qu'un problème. - Kevin
@OrangeDog il est tout à fait possible d'avoir un système Xenial sans Python 2 - J'ai couru Ubuntu Xenial Mate sur Raspberry PI et il avait un bureau mais pas python2.7. Il y a encore des programmes optionnels (ou nécessaires pour les ordinateurs de bureau) qui extraient Python 2, donc il y a de fortes chances que vous les ayez. - Antti Haapala


Mise à jour: Ce n'est pas la bonne façon, j'ai appris, puisque Python2 et Python3 ne sont pas interchangeables.

Vous pouvez essayer l'outil de ligne de commande update-alternatives.

$ sudo update-alternatives --config python

Si vous obtenez l'erreur "pas d'alternatives pour python", configurez vous-même une alternative avec la commande suivante:

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

Changer le chemin /usr/bin/python3 à votre version de python souhaitée en conséquence.


8
2018-05-04 14:03



python2 et python3 ne sont pas des alternatives. Ne pas utiliser update-alternatives à cette fin. - jobin
Pourquoi sont-ils pas? L'un d'entre vous peut-il expliquer pourquoi update-alternatives ne convient pas pour python? Est-ce à cause de legacy.python.org/dev/peps/pep-0394 ? - Dmitry Grigoryev
les alternatives sont des implémentations différentes pour les mêmes fonctionnalités. python2 et python3 ne fournissent pas les mêmes fonctionnalités. - Ely
Vous pouvez faire quelque chose comme ça si vous avez installé manuellement (via ppa ou autre) d'autres versions de python3. sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2 - David Baucum


Ubuntu, et le reste des distributions Linux, dépendent encore largement de Python 2.7 pour un certain nombre d’applications et de commandes. Si vous modifiez la référence par défaut de "python" en Python 3.x, un certain nombre de fonctions Python commenceront à générer des erreurs d'assertion.

Par exemple, sur Ubuntu, «pip» pour un ne fonctionnerait plus correctement à moins que vous ayez directement édité le fichier et modifié le shebang pour qu'il fasse référence à «#! / Usr / bin / env python2.7». Sur les versions RHEL (Red Hat Enterprise Linux) telles que Red Hat, Fedora et CentOS, la commande «Yum» dépend également de Python 2.7.

Ce que je veux dire ici, c’est que vous provoqueriez une quantité importante de code pour lancer des erreurs d’assertion pour que vous puissiez taper «python» dans le terminal pour référencer Python 3.x.

Il est préférable d'utiliser la commande 'python3' dans le terminal et le shebang '#! / Usr / bin / env python3' dans vos fichiers Python 3.x.


3
2018-03-25 15:43





Faire

cd ~
gedit .bash_aliases

puis écris soit

alias python=python3

ou

alias python='/usr/bin/python3'

Enregistrez le fichier, fermez le terminal et ouvrez-le à nouveau.
Lien


1
2017-09-15 18:36





Vous pouvez utiliser update-alternatives fournir différentes versions de programmes pouvant être nécessaires à différents moments en raison de problèmes de compatibilité.

Cette réponse Est un bon exemple de la façon de configurer les choses pour maintenir simultanément différentes versions de gcc / g ++, par exemple.

faites juste la même chose avec python2.7 et python 3.3


0
2017-10-18 13:19



Les utilisateurs débutants peuvent ne pas être en mesure d'adapter facilement la réponse liée à une situation différente. En plus de créditer la réponse précédente, il serait bon de définir les étapes nécessaires pour Python. - chaskes
Voici que j'ai trouvé bonne solution étape par étape linuxconfig.org/… - woto


cat > /usr/local/bin/py
#!/usr/bin/dash
python3 "$@"
<CTRL-D>

(à condition que vous ayez le droit d'écrire sur / usr / local / bin) également

cat > /usr/local/bin/pyi
#!/usr/bin/dash
python3 -i "$@"
<CTRL-D>

alors vous ne tapez que py (et utilisez py dans les lignes #!) pour votre python choisi.


0
2018-01-15 22:57





Vous pouvez créer un lien symbolique /usr/bin/python à python3 avec

sudo ln -s /usr/bin/python3 /usr/bin/python

Voir les autres réponses pour lesquelles vous pourriez ne pas vouloir faire cela. Ubuntu 18.04 n'est plus fourni avec Python 2, donc ça ne devrait pas être trop mal.


0
2018-05-03 21:01