Cambia la versione predefinita di Python3 in Ubuntu


73

Sto usando Ubuntu 16.04 LTS. Ho python3installato. Sono installate due versioni python 3.4.3e python 3.6. Ogni volta che uso il python3comando, ci vuole python 3.4.3per impostazione predefinita. Voglio usare python 3.6con python3.

python3 --version Spettacoli version 3.4.3

Sto installando ansiblequali supporti version > 3.5. Quindi, ogni volta che digito ansible nel terminale, genera errore a causa dipython 3.4


Qual è il comando usato per eseguire python 3.6?

il comando è: - python3.6
codeclue il

3
Che sudo update-alternatives --config python3dici
Mikael Kjær,

1
update-alternatives: errore: nessuna alternativa per python3
codeclue il

Vedi il mio commento nella risposta di seguito su come usare ansible con una versione specifica di python3. Puoi anche prendere in considerazione la rimozione di Python 3.4.
Mikael Kjær,

Risposte:


99

Dal commento:

sudo update-alternatives --config python

Ti mostrerà un errore:

update-alternatives: error: no alternatives for python3 

Devi aggiornare il tuo update-alternatives, quindi sarai in grado di impostare la versione predefinita di Python.

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

Quindi eseguire:

sudo update-alternatives --config python

Imposta python3.6 come predefinito.

Oppure usa il comando seguente per impostare python3.6 come predefinito:

sudo update-alternatives  --set python /usr/bin/python3.6

1
Questa risposta probabilmente si interromperà apt. Dopo aver selezionato una versione diversa di Python, prova a eseguire sudo apt update. Se si dà un errore, come ModuleNotFoundError: No module named 'apt_pkg'si vuole andare per /usr/lib/python3/dist-packagese creare il link simbolico: ln -s apt_pkg.cpython-{34m,36m}-x86_64-linux-gnu.so.
Giacomo Alzetta,

Mi dà un errore: $ sudo update-alternatives --set python /usr/bin/python3.6 update-alternatives: error: no alternatives for pythonqualche suggerimento?
Slava Fomin II

1
@ GAD3R Grazie. Sono riuscito a creare manualmente un collegamento simbolico per puntare a Python 3.6. Inoltre, non ho installato 3.7.
Slava Fomin II,

Fare python3il punto a python3.8con questo metodo ha rotto gnome-terminalper me.
Boris,

10

Puoi farlo applicando di seguito semplici passaggi:

  1. Controlla la versione di Python sul terminale - python --version
  2. Ottieni i privilegi dell'utente root. Sul tipo di terminale -sudo su
  3. Annota la password dell'utente root
  4. Esegui questo comando per passare a Python 3.6 -
    update-alternatives --install /usr/bin/python python /usr/bin/python3 1
  5. Controlla la versione di Python - python --version
  6. Fatto.

1
Funziona, è semplice da leggere e non usa l'alias. +1
Carlos Pinzón,

Funziona bene su Ubuntu 18.04. così semplice rispetto ad altre soluzioni. grazie mille
Mohammad Heydari,

7

l'utilizzo di questi comandi può aiutarti:

  1. controlla la versione di Python: ls /usr/bin/python*
  2. alias: alias python='/usr/bin/pythonxx'
  3. ri-login: . ~/.bashrc
  4. controlla di nuovo la versione di Python: python --version

grazie ma dopo aver riavviato il computer il pitone principale sarebbe ancora l'ex python 2.7
Mohammad Heydari

7

Crea un collegamento simbolico per / usr / bin / python3. Nella mia 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

3

Una risposta semplice sarebbe quella di aggiungere un alias per python3.6.

Basta aggiungere questa riga nel file ~ / .bashrc:, alias python3="python3.6"quindi chiudere il terminale e aprirne uno nuovo. Ora quando digiti python3 xxxviene tradotto in python3.6 xxx.

Questa soluzione risolve il problema senza dover modificare eccessivamente il sistema.

MODIFICARE :

Come ha sottolineato Mikael Kjær , questa è una configurazione errata di ansible con il tuo sistema.

Come visto qui:

Impostare l' ansible_python_interpreteropzione di configurazione su / usr / bin / python3. L'opzione di configurazione ansible_python_interpreter è di solito impostata per host come una variabile di inventario associata a un host o un gruppo di host:

  # 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

Come visto qui sul file di configurazione:

Le modifiche possono essere apportate e utilizzate in un file di configurazione che verrà elaborato nel seguente ordine:

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

In realtà, sto installando ansible, che supporta solo> python 3.5
codeclue il

1
Puoi impostare la ansible_python_interpretervariabile per usare python3.6. docs.ansible.com/ansible/latest/python_3_support.html
Mikael Kjær,

@ MikaelKjær Ho appena aggiunto il tuo commento alla mia risposta

2

se hai più versioni di Python nel tuo sistema. Hai solo bisogno di aggiornare il link simbolico di Python all'interno/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

Nell'esempio sopra se vedi l'output python --versionotterrai python2.7

Ora aggiorna il link simbolico di Python usando il comando seguente-

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

0

update-alternatives consiste nel modificare i symlink di sistema in symlink definiti dall'utente / definiti dall'amministratore. Se nel sistema sono installate più versioni di python3 e si desidera controllare la versione di python3 da richiamare quando viene chiamato python3. Fai quanto segue

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

Esegui sotto il comando se desideri cambiare priorità in futuro.

update-alternatives --config python3

Spiegazione:-

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

Puoi continuare a cambiare name_of_config in python4, ma poi devi richiamare update-alternatives --config con python4 per riconfigurare.

Usando questo approccio puoi controllare separatamente la versione di Python di sistema e la versione di Python3.


0

il primo controllo è nella cartella python3.6

ls /usr/bin/python3.6

se hai una cartella come python3.6 pronta per l'uso

quindi update-alternative

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

ora aggiorna la nuova configurazione per python3

sudo update-alternatives --config python3

controlla la versione di Python

python3 --version


0

È possibile modificare il collegamento simbolico ln -sf python3.6 python3all'interno /usr/bin. Con questo quando si chiama python3verrà eseguitopython3.6

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.