Comment passer en toute sécurité à python3 par défaut après la mise à niveau vers Ubuntu 18.04


13

Comme il python3s'agit de la version python par défaut dans Ubuntu 18.04 et python2qu'elle ne sera pas livrée par défaut sur une nouvelle installation d'Ubuntu 18.04, comment puis-je faire python3par défaut après une mise à niveau vers Ubuntu 18.04 (à partir du 16.04). Actuellement, après la mise à niveau, python2il est toujours par défaut (par exemple, la pythoncommande dirige vers python2etc.). Cependant, la purge du pythonpackage entraînera la suppression d'un trop grand nombre de packages qui en dépendent, donc ce n'est pas une option ici.

Idéalement, je souhaite supprimer python2autant que possible la dépendance. Peut-être que le processus de mise à niveau pourrait être conçu de telle sorte qu'il vérifie tous les packages, s'ils dépendent toujours vraiment des python2dépendances et collectent ainsi toutes les python2dépendances qui pourraient être remplacées par une python3dépendance équivalente (qui sera alors résolue par la mise à niveau).


Veuillez vérifier la nouvelle formulation. Le précédent n'était pas clair sur ce que vous demandiez. J'ai essayé de trier cela du titre de votre message.
Juan Antonio

Merci beaucoup pour l'édition @JuanAntonio. La majorité des modifications semblent bonnes. Je viens de faire quelques corrections supplémentaires pour mettre ces questions dans la bonne direction.
zazi

Est-ce sûr, quelle est la fin de la suppression de python2 ou de sa sortie. Si c'est là, quelque chose en a besoin!
George Udosen

2
En fait, python 2 n'est pas installé par défaut en 18.04, donc si vous l'avez, c'est parce que vous avez installé un paquet supplémentaire (ou fait une mise à niveau avec lesdits paquets déjà installés), ce qui nécessite toujours python 2. Ce 3.x est par défaut ne signifie pas qu'il n'y a plus de choses utilisant 2.x dans l'archive. 20.04 n'aura sûrement plus de python 2.x, car il ne sera plus pris en charge par l'amont à ce stade.
dobey

"quelle est la fin de la suppression de python2" - un système plutôt propre. mes installations python ont été cassées après la mise à niveau.
zazi

Réponses:


13

Cet article est un peu ancien, mais je pense qu'une meilleure alternative existe: entrez update-alternatives. Les éléments suivants définiront votre /usr/bin/pythonvaleur par défaut sur 2,7 mais auront 3,6 disponibles lorsque vous le souhaitez:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 20
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 10

La priorité la plus élevée est utilisée ici comme choix "automatique" /usr/bin/pythonmais vous pouvez facilement basculer en exécutant sudo update-alternatives --config python.


1
Bonne réponse. dans mon cas, python2.7 était installé par nodejs / npm et défini en quelque sorte par défaut pour python. J'ai utilisé sudo update-alternatives --remove-all pythonpour supprimer tous les python, puis ajouté le seul python que je veux utiliser sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 10. Il est également bon de savoir sudo update-alternatives --list pythonce qui est quoi.
philshem

1
vous pouvez également faire sudo apt install python3-pipetsudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10
Daniel

11

Pour supprimer complètement python2, vous devez purger le python2.x-minimalpackage qui est effectué par

sudo apt purge python2.x-minimal

remplacer x par la version exacte de python 2 sur votre système. Mais assurez-vous de regarder quels autres packages sont supprimés car vous avez peut-être transporté des packages qui dépendent toujours de python 2 même après la mise à niveau, et ces packages seront également désinstallés et cesseront de fonctionner.


Il n'y a rien de tel qu'un interpréteur python `` par défaut '' car cela dépend simplement du fichier /usr/bin/pythonvers lequel pointer, pour changer cela en python, utilisez la lncommande pour mettre à jour le lien, par exemple disons que vous voulez qu'il pointe vers python 3.6

sudo ln -sfn /usr/bin/python3.6 /usr/bin/python

Alternativement, si vous le souhaitez uniquement pour votre utilisateur, vous pouvez le définir comme votre alias dans votre .bashrc, pour cela, ouvrez-le ~/.bashrcdans l'éditeur de votre choix et ajoutez la ligne suivante

alias python='python3.6' 

"car vous pouvez avoir transporté des paquets qui dépendent toujours de python 2 même après la mise à niveau" <- oui, et mon intention est de me débarrasser de cette dépendance car elle n'est pas vraiment nécessaire, car Ubuntu 18.04 les exécute sans python2dépendance en utilisant sa valeur par défaut python3dépendances / packages.
zazi

1
Est-ce sûr, quelle est la fin de la suppression de python2 ou de sa sortie. Si c'est là, quelque chose en a besoin!
George Udosen

0

Sur mon 16.04 /usr/bin/pythonest juste un lien vers /usr/bin/python2.7donc je suppose que vous auriez juste à changer ce lien pour pointer /usr/bin/python3.x(avec adéquat xbien sûr).


vous pouvez également pointer /usr/bin/pythonvers /usr/bin/python3, qui est un lien vers la dernière version de python3 installée. Ou tout simplement un alias ou une fonction dans votre ~/.bashrc. Des tonnes d'options ;-)
Kev Inski

non, je suppose que ce n'est pas vraiment ce que je veux faire ici. Je veux me débarrasser de python2mon système (comme c'est le cas par défaut lors de l'installation d'un ubuntu 18.04 frais, où python3est par défaut et python2n'est pas installé par défaut)
zazi

2
@zazi, je ne recommanderais pas la purge python2. Il semble que de nombreux autres packages en dépendent. Avez-vous des inconvénients à rester python2installé?
Kev Inski

Je n'ai aucun inconvénient à garder python2installé, si vraiment nécessaire, mais je veux définir clairement python3par défaut, c'est-à-dire supprimer le python2aussi souvent que possible (et une nouvelle installation d'Ubuntu 18.04 démontre que cela est possible).
zazi

En effet.
Kev Inski
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.