No se puede establecer la versión predeterminada de python en python3 en ubuntu

146

Estaba tratando de establecer la versión predeterminada de Python python3en Ubuntu 16.04. Por defecto es python2(2.7). Seguí los siguientes pasos:

update-alternatives --remove python /usr/bin/python2
update-alternatives --install /usr/bin/python python /usr/bin/python3

pero obtengo el siguiente error para la segunda declaración,

rejeesh@rejeesh-Vostro-1015:~$ update-alternatives --install /usr/bin/python python /usr/bin/python3
update-alternatives: --install needs <link> <name> <path> <priority>

Use 'update-alternatives --help' for program usage information.   

Soy nuevo en Ubuntu y no sé qué estoy haciendo mal.

RejeeshChandran
fuente
3
Como se indica en la advertencia, le falta prioridad.
greedy52
66
Tenga cuidado de no eliminar Python 2.7 ya que paralizará muchas instalaciones de su sistema operativo (por experiencia :()
Jacques de Hooge
Hice una edición de mi respuesta en relación con su error de prioridad.
Steampunkery
1
Una palabra de advertencia: me parece una mala idea cambiar pythona Python 3. La forma predeterminada de invocar scripts escritos en Python 2 es python my-script-p2.py, mientras es python3 my-script-p3.py. Esperaría que muchos scripts del sistema confíen en esto.
Jan Groth
1
Para aquellos que estén interesados ​​en el tema, recomendaría prestar atención al entorno virtual: docs.python.org/3/tutorial/venv.html Mi Ubuntu 18 LTS todavía usa Python 2.7 y, por ejemplo, uso el entorno virtual para usar Python 3.X y estar actualizado en mis proyectos de Django.
Victor Bjorn

Respuestas:

136

Abre tu archivo .bashrc nano ~/.bashrc. Escriba alias python=python3en una nueva línea en la parte superior del archivo, luego guarde el archivo con ctrl + o y cierre el archivo con ctrl + x. Luego, de vuelta en su tipo de línea de comando source ~/.bashrc. Ahora tu alias debe ser permanente.

EDITAR:

Para las alternativas de actualización, la prioridad es un número entero. La prioridad representa qué programa debe ser el primero utilizado. Este artículo lo resume todo bastante bien.

Steampunkery
fuente
6060
Esta es la respuesta incorrecta. Editar su bashrc no hace lo mismo que las alternativas de actualización. Por ejemplo, los scripts que comienzan #!/usr/bin/env pythonno usarán la versión en bashrc. Utilice la respuesta de @ Pardhu.
stonewareslord
Escribí esta respuesta hace mucho tiempo, y soy consciente de que las alternativas de actualización no son lo mismo que cambiar bashrc. Puedo editar la respuesta si quieres.
Steampunkery
1
Es más una advertencia para los usuarios con esta pregunta que cambiar el alias no hace lo mismo. Depende de usted si desea editar.
stonewareslord
Esta es la única respuesta que me ayudó. Traté de hacer sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5.2. But I got: update-alternatives: --install needs <link> <name> <path> <priority> Use 'update-alternatives --help' for program usage information.
alexchenco
1
Hice esto y rompió cosas, como virtualenvs. Esta respuesta está creando más problemas
Kuzeko
295

La segunda línea mencionada se puede cambiar a

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

Esto le da una prioridad de 10 para el camino de python3. La desventaja de editar .bashrcarchivos es que no funcionará mientras se usan los comandos con sudo.

Actualización: utilice sudomientras ejecuta el comando de esta manera:

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

Pardhu
fuente
3
Buena y fácil salida.
PrakashG
77
Bueno y directo al grano. "<prioridad>" en el mensaje de error ya lo sugirió. Por cierto, "sudo" generalmente se necesita para ejecutar este comando de instalación.
yu
44
Como dijo ywu, tuve que ejecutar "sudo update-alternative --install / usr / bin / python python / usr / bin / python3 10"
Roy
3
Esta es la forma correcta de hacerlo con seguridad, pero vale la pena señalar que cambiar el valor predeterminado de todo el sistema es probable que rompa algunas cosas. Por ejemplo, tuve que ir y aplicar una solución al terminador , que solo funciona con python2.
Dale Anderson el
1
No funciona completamente - después de que se pythonejecuta este comando python3, pero python-configaún se ejecuta python2-configy se produce una rotura general
Chris Dodd
36

Para cambiar Python 3.6.8 como predeterminado en Ubuntu 18.04 a Python 3.7.

Instalar Python 3.7

Pasos para instalar Python3.7 y configurarlo como el intérprete predeterminado.

  1. Instale el paquete python3.7 usando apt-get

    sudo apt-get install python3.7

  2. Agregue Python3.6 y Python 3.7 a update-alternatives

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
  1. Actualice Python 3 para que apunte a Python 3.7

    sudo update-alternatives --config python3 Ingrese 2 para Python 3.7

  2. Probar la versión de python

python3 --v
Python 3.7.1 
Purushottam Prabhakar
fuente
3
Es posible que desee incluir una advertencia de que esto puede romper el software empaquetado. Python 3.6 es el valor predeterminado distribuido y cualquier paquete de software incluido también asumirá esta versión.
Tim
Esto me ayudo. Gracias.
jeffry copps
¿Puedo reemplazar el python a la versión 3.7 en lugar de python3?
Wee Hong
@Tim, ¿cuál es la mejor manera de encargarse de eso?
Shreya
@Wee Hong, sí puedes. En lugar de $ sudo update-alternative --install / usr / bin / python3 python3 ... simplemente reemplace a $ sudo update-alterative --install / usr / bin / python python ..... y después: sudo update -alternativas --config python.
Arthur Zennig
23

Para cambiar a python3, puede usar el siguiente comando en la terminal alias python=python3.

DanteVoronoi
fuente
44
Pero eso solo funciona para el proceso actual en ejecución en la terminal. Si cierro y abro el terminal, volverá a cambiar a python2.
RejeeshChandran 01 de
2
@RejeeshChandran Mira la respuesta de Steampunkery
Seraf
13

Una forma segura y sencilla sería usar un alias. Coloque esto en el archivo ~ / .bashrc: si tiene un editor gedit, use

gedit ~ / .bashrc

para ir al archivo bashrc y luego en la parte superior del archivo bashrc, haga el siguiente cambio.

alias python = python3

Después de agregar lo anterior en el archivo. ejecuta el siguiente comando

source ~ / .bash_aliases o source ~ / .bashrc

ejemplo:

$ python --version

Python 2.7.6

$ python3 --version

Python 3.4.3

$ alias python = python3

$ python --version

Python 3.4.3

Kan
fuente
10

Como agregado adicional, también puede agregar un alias para pip (en .bashrc o bash_aliases):

alias pip = 'pip3'

Es posible que una instalación limpia de python3 en realidad apunte a python3.x, por lo que puede necesitar:

alias pip = 'pip3.6'
alias python = 'python3.6'

Paraico
fuente
7

Al principio instale python3 y pip3

sudo apt-get install python3 python3-pip

luego en su terminal ejecutar

alias python=python3

Verifique la versión de python en su máquina.

python --version

fuente
7

Si tiene Ubuntu Focal (20.20) puede instalar python-is-python3:

sudo apt-get install python-is-python3

para reemplazar el enlace simbólico en el /usr/bin/pythonque apunta /usr/bin/python3.8.

silviot
fuente
5

Como dice, update-alternatives --installnecesita argumentos <link> <name> <path> y <priority>.

Tiene enlace ( /usr/bin/python), nombre ( python) y ruta ( /usr/bin/python3), le falta prioridad.

update-alternatives --help dice:

<priority> es un entero; Las opciones con números más altos tienen mayor prioridad en el modo automático.

Así que solo pon un 100o algo al final

usuario7502402
fuente
5

Hacer

cd ~
gedit .bash_aliases

luego escribe cualquiera

alias python=python3

o

alias python='/usr/bin/python3'

Guarde el archivo, cierre el terminal y vuelva a abrirlo.
¡Deberías estar bien ahora! Enlace

Rika
fuente
5

Simplemente siga estos pasos para ayudar a cambiar el python predeterminado a la nueva versión actualizada de python. Funcionó bien para mí.

  • sudo apt-install python3.7 Instala la última versión de Python que quieras
  • cd /usr/bin Ingrese el directorio raíz donde está instalado Python
  • sudo unlink pythono sudo unlink python3. Desvincular el pitón predeterminado actual
  • sudo ln -sv /usr/bin/python3.7 python Enlace la nueva versión descargada de Python
  • python --version Comprueba la nueva versión de Python y listo.
Shorya Sharma
fuente
3

Para otro enfoque no invasivo, solo para usuarios actuales:

# First, make $HOME/bin, which will be automatically added to user's PATH
mkdir -p ~/bin
# make link actual python binaries
ln -s $(which python3) python
ln -s $(which pip3) pip

python pip Estará listo en un nuevo shell.

tdihp
fuente
2

obtener ruta de Python desde

ls /usr/bin/python*

luego configura tu versión de Python

alias python="/usr/bin/python3"
pradeep karunathilaka
fuente
0

La mejor manera en ubuntu 18.04 que funcionará para todos los usuarios es

sudo vim /etc/bash.bashrc
add lines
alias python=python3
alias pip=pip3

Guarde los cambios y reinicie.

Después de reiniciar cualquier versión de Python 3 que tenga en el sistema, junto con Python 2.7 se tomará como predeterminada. Puede ser más específico diciendo lo siguiente en alias si tiene varias versiones de python 3.

sudo vim /etc/bash.bashrc
add lines
alias python=python3.6
alias pip=pip3.6
Mian Asbat Ahmad
fuente
0

Simplemente elimine python-is-python2:

sudo apt purge python-is-python2

E instalar python-is-python3:

sudo apt install python-is-python3

Automatizará el proceso de transición a la nueva python3. Opcionalmente, puede deshacerse de los paquetes restantes más adelante:

sudo apt autoremove && sudo apt autoclean
Farab Alipanah
fuente
0

Para cambiar Python 3.6.8 como predeterminado en Ubuntu 18.04 de Python 2.7, puede probar la herramienta de línea de comandos update-alternatives.

sudo update-alternatives --config python

Si obtiene el error "no hay alternativas para python", configure una alternativa usted mismo con el siguiente comando:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2

Cambie la ruta /usr/bin/python3a la versión de Python deseada en consecuencia.

El último argumento que especifica prioridad significa que, si no se realiza una selección alternativa manual, se establecerá la alternativa con el número de mayor prioridad. En nuestro caso, hemos establecido una prioridad 2 para /usr/bin/python3.6.8y, como resultado, /usr/bin/python3.6.8se configuró automáticamente como versión predeterminada de Python mediante el comando update-alternative.

En cualquier momento podemos cambiar entre las versiones alternativas de Python enumeradas anteriormente utilizando el siguiente comando e ingresando un número de selección:

update-alternatives --config python
Ranjeet Singh
fuente
-1

Al principio, asegúrese de que Python3 esté instalado en su computadora

Vaya a su terminal y escriba:

cd ~/ para ir a su directorio de inicio

Si aún no configuró su .bash_profile, escriba touch .bash_profilepara crear su .bash_profile.

O escriba open -e .bash_profilepara editar el archivo.

Copie y guarde alias python=python3en el .bash_profile.

Cierra y vuelve a abrir tu Terminal. Luego escriba el siguiente comando para verificar si Python3 es su versión predeterminada ahora:

python --version

Debería ver que python 3.xy es su versión predeterminada.

¡Salud!

nurealam siddiq
fuente
Este método ya se describe en la respuesta preferida para esta pregunta. y tu respuesta no aporta nada.
tripulse