Cambiar la versión predeterminada de Python3 en Ubuntu

73

Estoy usando Ubuntu 16.04 LTS. He python3instalado Hay dos versiones instaladas, python 3.4.3y python 3.6. Cada vez que uso el python3comando, toma python 3.4.3por defecto. Quiero usar python 3.6con python3.

python3 --version muestra version 3.4.3

Estoy instalando ansiblequé soportes version > 3.5. Entonces, cada vez que escribo ansible en la terminal, arroja un error debido apython 3.4

codeclue
fuente
¿Cuál es el comando utilizado para ejecutar Python 3.6?
el comando es: - python3.6
codeclue
3
Lo que hace su sudo update-alternatives --config python3voz?
Mikael Kjær
1
actualización-alternativas: error: no hay alternativas para python3
codeclue
Vea mi comentario en la respuesta a continuación sobre cómo usar ansible con una versión específica de python3. También podría considerar eliminar Python 3.4.
Mikael Kjær

Respuestas:

99

Del comentario:

sudo update-alternatives --config python

Te mostrará un error:

update-alternatives: error: no alternatives for python3 

Necesita actualizar su update-alternatives, luego podrá configurar su versión de python predeterminada.

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

Entonces corre :

sudo update-alternatives --config python

Establecer python3.6 como predeterminado.

O utilice el siguiente comando para configurar python3.6 como predeterminado:

sudo update-alternatives  --set python /usr/bin/python3.6
GAD3R
fuente
1
Esta respuesta probablemente se romperá apt. Después de seleccionar una versión diferente de python, intente ejecutar sudo apt update. Si se le da un error como ModuleNotFoundError: No module named 'apt_pkg'usted quiere ir a /usr/lib/python3/dist-packagesy crear el enlace simbólico: ln -s apt_pkg.cpython-{34m,36m}-x86_64-linux-gnu.so.
Giacomo Alzetta
Me da un error: ¿ $ sudo update-alternatives --set python /usr/bin/python3.6 update-alternatives: error: no alternatives for pythonAlguna sugerencia?
Slava Fomin II
1
@ GAD3R Gracias. Logré crear un enlace simbólico manualmente para apuntar a Python 3.6. Además, no tengo 3.7 instalado.
Slava Fomin II
El hecho de python3señalar python3.8con este método se rompió gnome-terminalpara mí.
Boris
10

Puede lograr esto aplicando los siguientes pasos simples:

  1. Verifique la versión de Python en la terminal - python --version
  2. Obtenga privilegios de usuario root. En tipo de terminal -sudo su
  3. Anote la contraseña del usuario root
  4. Ejecute este comando para cambiar a python 3.6 -
    update-alternatives --install /usr/bin/python python /usr/bin/python3 1
  5. Verifique la versión de Python - python --version
  6. Hecho.
Vineet Jain
fuente
1
Funciona, es simple de leer y no usa alias. +1
Carlos Pinzón
Funciona bien en Ubuntu 18.04. tan simple que otras soluciones. muchas gracias
Mohammad Heydari
7

El uso de estos comandos puede ayudarlo a:

  1. Comprueba la versión de Python: ls /usr/bin/python*
  2. alias: alias python='/usr/bin/pythonxx'
  3. reiniciar sesión: . ~/.bashrc
  4. compruebe la versión de python nuevamente: python --version
Tritón
fuente
gracias, pero después de reiniciar la computadora, la python principal seguiría siendo la ex python 2.7
Mohammad Heydari
7

Cree un enlace simbólico para / usr / bin / python3. En mi LinuxMint:

# ls -lh /usr/bin/python3 /usr/bin/python
lrwxrwxrwx 1 root root 9 ноя 24  2017 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root 9 сен  6  2017 /usr/bin/python3 -> python3.5

# mv /usr/bin/python
# cp /usr/bin/python3 /usr/bin/python
# python --version
Python 3.5.2
nabi sheyhov
fuente
3

Una respuesta fácil sería agregar un alias para python3.6.

Simplemente agregue esta línea en el archivo ~ / .bashrc:, alias python3="python3.6"luego cierre su terminal y abra una nueva. Ahora, cuando escribe python3 xxx, se traduce a python3.6 xxx.

Esta solución soluciona su problema sin necesidad de modificar demasiado su sistema.

EDITAR:

Como señaló Mikael Kjær , esta es una configuración incorrecta de ansible con su sistema.

Como se ve aquí:

Establezca la ansible_python_interpreteropción de configuración en / usr / bin / python3. La opción de configuración ansible_python_interpreter generalmente se establece por host como una variable de inventario asociada con un host o grupo de hosts:

  # Example inventory that makes an alias for localhost that uses python3
  [py3-hosts]
  localhost-py3 ansible_host=localhost ansible_connection=local

  [py3-hosts:vars]
  ansible_python_interpreter=/usr/bin/python3

Como se ve aquí sobre el archivo de configuración:

Los cambios se pueden realizar y utilizar en un archivo de configuración que se procesará en el siguiente orden:

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

fuente
En realidad, estoy instalando ansible, que solo admite> python 3.5
codeclue
1
Puede configurar la ansible_python_interpretervariable para usar su python3.6. docs.ansible.com/ansible/latest/python_3_support.html
Mikael Kjær
@ MikaelKjær Acabo de agregar tu comentario a mi respuesta
2

si tiene varias versiones de python en su sistema. Solo necesita actualizar el enlace simbólico de Python dentro/usr/bin/

root@irshad:/usr/bin# ls -lrth python*
lrwxrwxrwx 1 root root    9 Apr 16  2018 python -> python2.7
-rwxr-xr-x 1 root root 3.6M Nov 12  2018 python2.7
-rwxr-xr-x 2 root root 4.4M May  7 14:58 python3.6

En el ejemplo anterior, si ve el resultado python --version, obtendrá python2.7

Ahora actualice el enlace simbólico de Python usando el siguiente comando:

root@irshad:/usr/bin# unlink python
root@irshad:/usr/bin# ln -s /usr/bin/python3.6 python
root@irshad:/usr/bin# python --version
Python 3.6.8
IRSHAD
fuente
0

actualización-alternativas es cambiar los enlaces simbólicos del sistema a enlaces simbólicos definidos por el usuario / definidos por el administrador. Si tiene varias versiones de python3 instaladas en su sistema y desea controlar qué versión de python3 invocar cuando se llama a python3. Haz lo siguiente

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.4 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2

Ejecute el siguiente comando si desea cambiar la prioridad en el futuro.

update-alternatives --config python3

Explicación:-

sudo update-alternatives --install <symlink_origin> <name_of_config> <symlink_destination> <priority>

Puede continuar cambiando name_of_config a python4, pero luego debe invocar las alternativas de actualización --config con python4 para reconfigurar.

Con este enfoque, puede controlar la versión de python del sistema y la versión de python3 por separado.

Wittyurchin
fuente
0

la primera comprobación de tu carpeta python3.6

ls /usr/bin/python3.6

si tienes una carpeta como python3.6 bueno para ir

luego actualizar-alternativas

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

ahora actualice la nueva configuración para python3

sudo update-alternatives --config python3

comprobar la versión de python

python3 --version

mmblack
fuente
0

Puede cambiar el enlace simbólico por ln -sf python3.6 python3dentro /usr/bin. Con esto cuando lo llames python3se ejecutarápython3.6

SPAWN35
fuente