Cómo cambiar de forma segura a python3 como predeterminado después de actualizar a Ubuntu 18.04

13

Dado que python3es la versión predeterminada de Python en Ubuntu 18.04 y python2no se enviará por defecto en una nueva instalación de Ubuntu 18.04, ¿cómo puedo hacer la python3predeterminada después de una actualización a Ubuntu 18.04 (desde 16.04)? Actualmente, después de la actualización python2, el valor predeterminado sigue siendo (por ejemplo, el pythoncomando dirige a python2etc.). Sin embargo, purgar el pythonpaquete dará como resultado la eliminación de demasiados paquetes que dependen de él, por lo que esta no es una opción aquí.

Idealmente, quiero eliminar la python2dependencia tanto como sea posible. Tal vez el proceso de actualización podría diseñarse de tal manera que verifique todos los paquetes, si realmente dependen de las python2dependencias y, por lo tanto, recolecta todas las python2dependencias que podrían ser reemplazadas por una python3dependencia equivalente (que luego se resolverá con la actualización).

zazi
fuente
Por favor revise la nueva redacción. Anterior no estaba claro sobre lo que estaba preguntando. Intenté resolver esto del título de tu publicación.
Juan Antonio
Muchas gracias por la edición @JuanAntonio. La mayoría de las ediciones se ven bien. Solo hice algunas correcciones adicionales para llevar estas preguntas en la dirección correcta.
zazi
¿Es esto seguro, cuál es el final de eliminar python2 o dejarlo? Si está allí, ¡entonces algo lo necesita!
George Udosen
2
De hecho, Python 2 no está instalado de manera predeterminada en 18.04, por lo que si lo tiene, es porque instaló algún paquete adicional (o realizó una actualización con dichos paquetes ya instalados), que todavía requiere Python 2. Ese 3.x es predeterminado no significa que no haya más cosas usando 2.x en el archivo. 20.04 seguramente ya no tendrá python 2.x, ya que ya no será compatible con el flujo ascendente en ese momento.
Dobey
"¿Cuál es el final de eliminar python2?", un sistema bastante limpio. mis instalaciones de Python se rompieron de alguna manera después de la actualización.
zazi

Respuestas:

13

Esta publicación es un poco antigua, pero creo que existe una mejor alternativa: ingresar update-alternatives. Lo siguiente establecerá su /usr/bin/pythonvalor predeterminado en 2.7 pero tendrá 3.6 disponible cuando lo desee:

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 prioridad más alta aquí se usa como la opción "automática", /usr/bin/pythonpero puede cambiar fácilmente al ejecutarla sudo update-alternatives --config python.

Joshua Whitley
fuente
1
buena respuesta. en mi caso, python2.7 estaba siendo instalado por nodejs / npm y configurado de alguna manera como predeterminado para python. Solía sudo update-alternatives --remove-all pythoneliminar todas las python, y luego agregué la única python que quiero usar sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 10. También es bueno saber sudo update-alternatives --list pythonqué es qué.
philshem
1
es posible que también desee hacer sudo apt install python3-pipysudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10
Daniel
10

Para eliminar completamente python2, debe purgar el python2.x-minimalpaquete que se realiza mediante

sudo apt purge python2.x-minimal

reemplazando x con la versión exacta de python 2 en su sistema. Pero asegúrese de ver qué otros paquetes se eliminan, ya que es posible que haya llevado paquetes que todavía dependen de python 2 incluso después de la actualización, y esos paquetes también se desinstalarán y dejarán de funcionar.


No existe un intérprete de python 'predeterminado' porque solo depende de a qué archivo real /usr/bin/pythonapunta, para cambiar esto a python use el lncomando para actualizar el enlace, por ejemplo, digamos que desea que apunte a python 3.6

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

Alternativamente, si solo quiere esto para su usuario, puede configurarlo como su alias en su .bashrc, para hacerlo, abrir ~/.bashrcen el editor de su elección y agregar la siguiente línea

alias python='python3.6' 
Amith KK
fuente
"ya que puede haber llevado paquetes que aún dependen de python 2 incluso después de la actualización" <- sí, y mi intención es deshacerme de esta dependencia ya que no es realmente necesario, ya que Ubuntu 18.04 los ejecuta sin python2dependencia utilizando su valor predeterminado python3dependencias / paquetes.
zazi
1
¿Es esto seguro, cuál es el final de eliminar python2 o dejarlo? Si está allí, ¡entonces algo lo necesita!
George Udosen
0

En mi 16.04 /usr/bin/pythones solo un enlace, /usr/bin/python2.7así que supongo que solo tendrías que cambiar este enlace para señalar /usr/bin/python3.x(con el adecuado, xpor supuesto).

xenoide
fuente
también se puede apuntar /usr/bin/pythona /usr/bin/python3, que es un enlace a la versión más reciente python3 instalado. O simplemente un alias o una función en tu ~/.bashrc. Toneladas de opciones ;-)
Kev Inski
no, supongo, que esto no es realmente lo que quiero hacer aquí. Quiero deshacerme de python2mi sistema (como es el caso predeterminado al instalar un ubuntu 18.04 nuevo, donde python3está predeterminado y python2no está instalado por defecto)
zazi
2
@zazi No recomendaría purgar python2. Parece que muchos otros paquetes dependen de ello. ¿Tiene alguna desventaja al mantener python2instalado?
Kev Inski
No tengo ninguna desventaja en mantenerlo python2instalado, si es realmente necesario, pero quiero establecerlo claramente python3como predeterminado, es decir, eliminarlo con la python2mayor frecuencia posible (y una instalación limpia de Ubuntu 18.04 demuestra que esto es posible).
zazi
De hecho lo hace.
Kev Inski