Ändern Sie die Python3-Standardversion in Ubuntu

72

Ich benutze Ubuntu 16.04 LTS. Ich habe python3installiert. Es sind zwei Versionen installiert, python 3.4.3und python 3.6. Wann immer ich einen python3Befehl verwende, dauert dies python 3.4.3standardmäßig. Ich möchte verwenden python 3.6mit python3.

python3 --version zeigt an version 3.4.3

Ich installiere ansiblewelche unterstützt version > 3.5. Also, wann immer ich ansible in das Terminal tippe, wirft es Fehler wegenpython 3.4

Codeclue
quelle
Mit welchem ​​Befehl wird Python 3.6 ausgeführt?
Der Befehl lautet: - python3.6
codeclue
3
Was sagt ihr dazu sudo update-alternatives --config python3?
Mikael Kjær
1
update-alternatives: fehler: keine alternativen für python3
codeclue
Siehe meinen Kommentar in der folgenden Antwort zur Verwendung von Ansible mit einer bestimmten Version von Python3. Sie können auch in Betracht ziehen, Python 3.4 zu entfernen.
Mikael Kjær

Antworten:

96

Aus dem Kommentar:

sudo update-alternatives --config python

Zeigt einen Fehler an:

update-alternatives: error: no alternatives for python3 

Sie müssen Ihre aktualisieren update-alternatives, dann können Sie Ihre Standard-Python-Version festlegen.

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

Dann renne :

sudo update-alternatives --config python

Setze python3.6 als Standard.

Oder verwenden Sie den folgenden Befehl, um python3.6 als Standard festzulegen:

sudo update-alternatives  --set python /usr/bin/python3.6
GAD3R
quelle
1
Diese Antwort wird wahrscheinlich brechen apt. Versuchen Sie nach der Auswahl einer anderen Version von Python auszuführen sudo apt update. Wenn es einen Fehler gibt , wie ModuleNotFoundError: No module named 'apt_pkg'wollen Sie gehen /usr/lib/python3/dist-packagesund den Symlink zu erstellen: ln -s apt_pkg.cpython-{34m,36m}-x86_64-linux-gnu.so.
Giacomo Alzetta
Es gibt mir einen Fehler: $ sudo update-alternatives --set python /usr/bin/python3.6 update-alternatives: error: no alternatives for pythonIrgendwelche Vorschläge?
Slava Fomin II
1
@ GAD3R Danke. Ich habe es geschafft, manuell einen Symlink zu erstellen, der auf Python 3.6 verweist. Außerdem habe ich 3.7 nicht installiert.
Slava Fomin II
Etwas herstellen python3Punkt python3.8mit dieser Methode brach gnome-terminalfür mich.
Boris
10

Sie können dies erreichen, indem Sie die folgenden einfachen Schritte ausführen:

  1. Überprüfen Sie die Python-Version auf dem Terminal - python --version
  2. Holen Sie sich Root-Benutzerrechte. On terminal type -sudo su
  3. Notieren Sie sich das Passwort des Root-Benutzers
  4. Führen Sie diesen Befehl aus, um zu Python 3.6 zu wechseln -
    update-alternatives --install /usr/bin/python python /usr/bin/python3 1
  5. Überprüfen Sie die Python-Version - python --version
  6. Getan.
Vineet Jain
quelle
1
Funktioniert, ist einfach zu lesen und verwendet keinen Alias. +1
Carlos Pinzón
Funktioniert gut auf Ubuntu 18.04. so einfach wie andere lösungen.
Vielen
7

Erstellen Sie einen Symlink für / usr / bin / python3. In meiner 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
quelle
6

Die Verwendung dieser Befehle kann Ihnen helfen:

  1. Überprüfen Sie die Version von Python: ls /usr/bin/python*
  2. alias: alias python='/usr/bin/pythonxx'
  3. Erneut anmelden: . ~/.bashrc
  4. Überprüfen Sie die Python-Version erneut: python --version
Newt
quelle
danke, aber nach dem Neustart des Computers wäre die Hauptpython immer noch die Ex-Python 2.7
Mohammad Heydari
3

Eine einfache Antwort wäre, einen Alias ​​für python3.6 hinzuzufügen.

Fügen Sie einfach diese Zeile in die Datei ~ / .bashrc: ein alias python3="python3.6", schließen Sie Ihr Terminal und öffnen Sie eine neue. Wenn Sie jetzt tippen, wird python3 xxxes in übersetzt python3.6 xxx.

Diese Lösung behebt Ihr Problem, ohne dass Sie Ihr System zu stark anpassen müssen.

EDIT:

Wie Mikael Kjær betonte, ist dies eine Fehlkonfiguration von Ansible mit Ihrem System.

Wie hier zu sehen :

Setzen Sie die ansible_python_interpreterKonfigurationsoption auf / usr / bin / python3. Die ansible_python_interpreter-Konfigurationsoption wird normalerweise pro Host als Inventarvariable festgelegt, die einem Host oder einer Gruppe von Hosts zugeordnet ist:

  # 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

Wie hier über die Konfigurationsdatei gesehen:

Änderungen können in einer Konfigurationsdatei vorgenommen und verwendet werden, die in der folgenden Reihenfolge verarbeitet wird:

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

quelle
Eigentlich installiere ich ansible, das nur> Python 3.5
Codeclue 13.12.17
1
Sie können die ansible_python_interpreterVariable für die Verwendung von Python 3.6 festlegen. docs.ansible.com/ansible/latest/python_3_support.html
Mikael Kjær
@ MikaelKjær Ich habe gerade Ihren Kommentar zu meiner Antwort hinzugefügt
1

Wenn Sie mehrere Python-Versionen in Ihrem System haben. Sie müssen nur den symbolischen Link von Python im Inneren aktualisieren/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

Wenn Sie im obigen Beispiel die Ausgabe von sehen, erhalten python --versionSie python2.7

Aktualisieren Sie nun den Python-Symlink mit dem folgenden Befehl:

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
quelle
0

update-alternatives besteht darin, die System-Symlinks in benutzerdefinierte / admin-definierte Symlinks zu ändern. Wenn Sie mehrere Versionen von Python3 auf Ihrem System installiert haben und steuern möchten, welche Python3-Version aufgerufen werden soll, wenn Python3 aufgerufen wird. Mach Folgendes

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

Führen Sie den folgenden Befehl aus, wenn Sie die Priorität in Zukunft ändern möchten.

update-alternatives --config python3

Erläuterung:-

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

Sie können weiterhin name_of_config in python4 ändern, müssen dann aber update-alternatives --config mit python4 aufrufen, um die Konfiguration zu ändern.

Mit diesem Ansatz können Sie die System-Python-Version und die Python3-Version getrennt steuern.

wittyurchin
quelle
0

die erste Prüfung machen Sie Python3.6-Ordner

ls /usr/bin/python3.6

wenn du einen ordner wie python3.6 hast gut zu gehen

dann update-alternatives

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

Aktualisiere jetzt die neue Konfiguration für python3

sudo update-alternatives --config python3

Überprüfen Sie die Python-Version

python3 --version

mmschwarz
quelle
0

Sie können die simbolic Verbindung durch nach ln -sf python3.6 python3innen ändern /usr/bin. Wenn Sie dies aufrufen python3, wird es ausgeführtpython3.6

SPAWN35
quelle