
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 .bashrc
y poner esta línea:
alias python3=python3.7
Siempre que lo escribas python3
lo reemplazarás con python3.7
.
O puede usar el comando update-alternatives
que 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.7
tendrá 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-alternatives
para 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 .bashrc
y 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 python3
globalmente 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 python3
para 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-alternatives
método causó problemas con apt
. Específicamente, tengo
ModuleNotFoundError: No module named 'apt_pkg'
Arreglando su sistema si ejecutó el update-alternatives
método
Si corrimos update-alternatives
y 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.7
esté 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'