Sumario rápido

Sumario rápido

He instalado python3.7, pero no estoy seguro de cómo convertirlo en Python predeterminado.

Vea abajo:

~/Documents/robosuite$ python3.7
Python 3.7.1 (default, Oct 22 2018, 11:21:55) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
KeyboardInterrupt
>>> 

~/Documents/robosuite$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Quiero que aparezca python3.7 cuando uso el comandopython3

Respuesta1

La solución simple es editar .bashrcy poner esta línea:

alias python3=python3.7

Siempre que lo escribas python3lo reemplazarás con python3.7.

O puede usar el comando update-alternativesque prefiera, es decir:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2

Entonces aquí python3.7tendrá mayor prioridad python3.6. Luego usa:

sudo update-alternatives --config python3

Presione la tecla Intro si está satisfecho

Respuesta2

Me gustaría ampliaruna respuesta previaya que los dos enfoques dados no son equivalentes y uno de ellos puede incluso romper el sistema. El problema es que hay dos cosas diferentes que uno podría intentar hacer "cambiando la versión predeterminada de Python".

Sumario rápido

Agregar

alias python3=python3.7

a .bashrc.

HacernoÚselo update-alternativespara cambiar su versión predeterminada de Python, ya que esto dañará las aplicaciones del sistema.

Más detalles

alias de bash

La primera es que, para un shell interactivo, uno simplemente desea abrir fácilmente el Python deseado escribiendo

$ python

o

$ python3

Esto se logra agregando la línea

alias python3=python3.7

a .bashrc. Si uno está usando otro shell, agréguelo al archivo de configuración apropiado. Esto también tiene la ventaja de que si causa problemas por cualquier motivo, uno puede simplemente eliminar la línea infractora .bashrcy reiniciar el terminal.

update-alternatives

Lo segundo que uno podría querer decir con "cambiar la versión predeterminada de Python" es cambiar la versión predeterminada de Python paratodoprogramas, incluidos aquellos que no se inician desde un shell interactivo. Este es el resultado de correr.

$ sudo update-alternatives --config python3

Sin embargo, si ejecuta esto en una instalación limpia de Debian/Ubuntu, notará que el comando devuelve

update-alternatives: error: no alternatives for python3

incluso si tiene varias versiones de Python 3 instaladas mediante apt. Hay una muy buena razón para esto.

El problema con esto es que muchas aplicaciones del sistema usan Python y, dependiendo de la distribución exacta, muchas usan Python 3. Cambiar la versión llamada por el comando python3globalmente obligará a estas aplicaciones a usar esta versión. Aunque las diferentes versiones de Python 3 son en gran medida compatibles, todavía haycaracterísticas movidas y eliminadas entre versiones. Si una aplicación del sistema utiliza estas funciones, cambiar python3para iniciar una versión más nueva dañará la aplicación.

Pruebas

Creé una instalación nueva de Ubuntu 18.04 en una máquina virtual. Agregar el alias de bash no causó problemas inmediatos.

El uso del update-alternativesmétodo causó problemas con apt. Específicamente, tengo

ModuleNotFoundError: No module named 'apt_pkg'

Arreglando su sistema si ejecutó el update-alternativesmétodo

Si corrimos update-alternativesy fallamos apt, aún podemos arreglar el sistema. Durante mis pruebas, aún se podía abrir la terminal. Se puede volver al Python predeterminado ejecutando

$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.X 1000

donde 3.X es la versión original de Python 3 de su sistema, y ​​1000 es solo una alta prioridad para asegurarse de que esté en la cima. Entonces uno puede correr

$ sudo update-alternatives --config python3

y asegúrese de que esté seleccionado el sistema Python original. Reinicie el sistema y volverá a la normalidad.

Respuesta3

$ sudo su
$ update-alternatives --install /usr/bin/python python /usr/bin/python3 1

...cuando ya python3.7esté instalado

Respuesta4

Para máquinas que no tienen el comando de actualización de alternativas, se puede hacer una solución rápida y sucia como

sudo ln -sf `which python3.7` `which python3`

Por lo general (al menos en todos los casos que he visto), python3/python2/python son solo enlaces simbólicos al ejecutable de Python de una versión específica. Cambiar este enlace simbólico debería cambiar el 'python predeterminado'

información relacionada