Zmień domyślną wersję Python3 w Ubuntu


72

Używam Ubuntu 16.04 LTS. Mam python3zainstalowany. Zainstalowano dwie wersje python 3.4.3i python 3.6. Ilekroć używam python3polecenia, python 3.4.3domyślnie trwa on . Chcę używać python 3.6z python3.

python3 --version przedstawia version 3.4.3

Instaluję, ansiblektóry obsługuje version > 3.5. Tak więc, ilekroć wpisuję ansible w terminalu, generuje błąd z powodupython 3.4


Jakiego polecenia używa się do wykonania Pythona 3.6?

polecenie to: -
python3.6

3
Co sudo update-alternatives --config python3mówisz?
Mikael Kjær

1
aktualizacja-alternatywy: błąd: brak alternatywy dla python3
kodeklue

Zobacz mój komentarz w poniższej odpowiedzi na temat używania ansible z określoną wersją python3. Możesz również rozważyć usunięcie Pythona 3.4.
Mikael Kjær

Odpowiedzi:


96

Z komentarza:

sudo update-alternatives --config python

Wyświetli się błąd:

update-alternatives: error: no alternatives for python3 

Musisz zaktualizować swoją update-alternatives, wtedy będziesz mógł ustawić domyślną wersję Pythona.

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

Następnie uruchomić :

sudo update-alternatives --config python

Ustaw python3.6 jako domyślny.

Lub użyj następującego polecenia, aby ustawić Python3.6 jako domyślny:

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

1
Ta odpowiedź prawdopodobnie się nie powiedzie apt. Po wybraniu innej wersji Pythona spróbuj uruchomić sudo apt update. Jeśli to daje błąd jak ModuleNotFoundError: No module named 'apt_pkg'chcesz iść do /usr/lib/python3/dist-packagesi utworzyć dowiązania: ln -s apt_pkg.cpython-{34m,36m}-x86_64-linux-gnu.so.
Giacomo Alzetta

Daje mi błąd: $ sudo update-alternatives --set python /usr/bin/python3.6 update-alternatives: error: no alternatives for pythonjakieś sugestie?
Slava Fomin II

1
@ GAD3R Dzięki. Udało mi się ręcznie utworzyć dowiązanie symboliczne, aby wskazać Python 3.6. Ponadto nie mam zainstalowanej wersji 3.7.
Slava Fomin II

Wskazanie python3na python3.8tę metodę złamało się gnome-terminaldla mnie.
Boris

10

Możesz to osiągnąć, wykonując poniższe proste kroki -

  1. Sprawdź wersję Pythona na terminalu - python --version
  2. Uzyskaj uprawnienia użytkownika root. Typ terminala -sudo su
  3. Zapisz hasło użytkownika root
  4. Wykonaj to polecenie, aby przełączyć się na Python 3.6 -
    update-alternatives --install /usr/bin/python python /usr/bin/python3 1
  5. Sprawdź wersję Pythona - python --version
  6. Gotowy.

1
Działa, jest łatwy do odczytania i nie używa aliasu. +1
Carlos Pinzón

Działa dobrze na Ubuntu 18.04. tak proste niż inne rozwiązania. wielkie dzięki
Mohammad Heydari

7

Utwórz dowiązanie symboliczne dla / usr / bin / python3. W moim 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

6

użycie tych poleceń może pomóc:

  1. sprawdź wersję Pythona: ls /usr/bin/python*
  2. Alias: alias python='/usr/bin/pythonxx'
  3. zaloguj się ponownie: . ~/.bashrc
  4. sprawdź ponownie wersję Pythona: python --version

dzięki, ale po ponownym uruchomieniu komputera głównym python nadal będzie ex Python 2.7
Mohammad Heydari

3

Łatwą odpowiedzią byłoby dodanie aliasu dla python3.6.

Po prostu dodaj ten wiersz do pliku ~ / .bashrc:, alias python3="python3.6"a następnie zamknij terminal i otwórz nowy. Teraz po wpisaniu python3 xxxzostanie przetłumaczone na python3.6 xxx.

To rozwiązanie rozwiązuje problem bez zbytniego dostrajania systemu.

EDYTOWAĆ :

Jak zauważył Mikael Kjær , jest to błędna konfiguracja ansible w twoim systemie.

Jak widać tutaj:

Ustaw ansible_python_interpreteropcję konfiguracji na / usr / bin / python3. Opcja konfiguracji ansible_python_interpreter jest zwykle ustawiana dla hosta jako zmienna asortymentowa powiązana z hostem lub grupą hostów:

  # 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

Jak widać tutaj o pliku konfiguracyjnym:

Zmiany można wprowadzić i wykorzystać w pliku konfiguracyjnym, który będzie przetwarzany w następującej kolejności:

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

Właściwie instaluję ansible, który obsługuje tylko> Python 3.5
kodeklue

1
Możesz ustawić ansible_python_interpreterzmienną tak, aby korzystała ze swojego python3.6. docs.ansible.com/ansible/latest/python_3_support.html
Mikael Kjær,

@ MikaelKjær Właśnie dodałem twój komentarz do mojej odpowiedzi

1

jeśli masz w systemie wiele wersji Pythona. Musisz tylko zaktualizować symboliczny link Pythona w środku/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

W powyższym przykładzie, jeśli zobaczysz wynik python --version, otrzymasz python2.7

Teraz zaktualizuj dowiązanie symboliczne python, używając poniższego polecenia

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 to zmiana dowiązań systemowych na dowiązania symboliczne zdefiniowane przez użytkownika / administratora Jeśli masz w systemie wiele wersji Python3 i chcesz kontrolować, która wersja Python3 ma być wywoływana po wywołaniu Python3. Wykonaj następujące czynności

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

Uruchom poniżej polecenia, jeśli chcesz zmienić priorytet w przyszłości.

update-alternatives --config python3

Wyjaśnienie:-

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

Możesz przejść do zmiany nazwa_konfiguracji na python4, ale następnie musisz wywołać alternatywy aktualizacji --config z python4, aby zmienić konfigurację.

Korzystając z tego podejścia, możesz osobno kontrolować systemową wersję python i wersję python3.


0

pierwsze sprawdzenie czy python3.6 folder

ls /usr/bin/python3.6

jeśli masz folder podobny do python3.6, to dobrze

następnie zaktualizuj alternatywy

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

teraz zaktualizuj nową konfigurację dla python3

sudo update-alternatives --config python3

sprawdź wersję Pythona

python3 --version


0

Możesz zmienić link simboliczny ln -sf python3.6 python3wewnątrz /usr/bin. Dzięki temu, gdy zadzwonisz python3, wykona siępython3.6

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.