Wie ändere ich die Standard-Python-Version?

105

Ich habe Python 3.2 auf meinem Mac installiert. Nachdem ich / Applications / Python 3.2 / Update Shell Profile.command ausgeführt habe , ist es verwirrend, dass bei der Eingabe von Python -V in Terminal Python 2.6.1 angezeigt wird. Wie kann ich die Standard-Python-Version ändern?

Zhu Shengqi
quelle
Siehe auch
Santosh Kumar
Unter opensource.com/article/19/5/python-3-default-mac finden Sie eine gute Lösung mit pyenv.
Thomas Ahle

Antworten:

114

Dies ist wahrscheinlich aus Gründen der Abwärtskompatibilität wünschenswert.

Python3 unterbricht die Abwärtskompatibilität, und Programme, die 'python' aufrufen, erwarten wahrscheinlich python2. Sie haben wahrscheinlich viele Programme und Skripte, von denen Sie nicht einmal wissen, dass sie python = python2 erwarten. Wenn Sie dies ändern, werden diese Programme und Skripte beschädigt.

Die Antwort, nach der Sie wahrscheinlich suchen, lautet: Sie sollten dies nicht ändern .

Sie können jedoch einen benutzerdefinierten Alias ​​in Ihrer Shell erstellen. Die Art und Weise, wie Sie dies tun, hängt von der Shell ab, aber vielleicht könnten Sie es tunalias py=python3

Wenn Sie sich nicht sicher sind, wie Sie die neueste Version von Python starten sollen, python3bleibt Ihre python2Installation zumindest unter Linux intakt (aus den oben genannten Kompatibilitätsgründen) . So können Sie Python3 mit dem python3Befehl starten .

Ninjagecko
quelle
36
Dies sind hilfreiche Informationen, aber die Frage lautete: "Wie kann ich die Standard-Python-Version ändern?" Können wir etwas hinzufügen, um Menschen zu helfen, die das versuchen?
Dmeyerson
Auf einem Mac lässt die Installation von Python3 auch Python2 intakt. Aber es scheint mir, dass es eine Möglichkeit gibt, die Standardeinstellung zu ändern, die ausgeführt wird, wenn nur "Python" eingegeben wird. Ich bin einmal auf die Option gestoßen. Ich habe mich dafür entschieden, es so zu belassen, wie "python --version" 2.7.12 und "python3 --version" 3.7.0 zeigt. Ich stimme Dmeyerson oben zu, dass die Frage ist, wie man es ändert. Ihr Rat ist gut, aber es gibt eine Möglichkeit, ihn zu ändern, wenn Sie müssen (oder wirklich wollen).
Rich Sadowsky
3
> Die Antwort, nach der Sie wahrscheinlich suchen, lautet: Sie sollten dies nicht ändern. Und hier dachte ich, es sei "wie ändere ich das"!
Duane
2
Diese Antwort ist richtig. Ändern Sie nicht, auf welche pythonPunkte auf Systemebene verwiesen wird, da Sie sonst wichtige Komponenten Ihres Betriebssystems beschädigen können . Verwenden Sie stattdessen eine separate Python 3-Installation und virtualisieren Sie, um sich ein "lokales" Standard-Python zu geben.
Martijn Pieters
50

Überprüfen Sie die Position von Python 3

$ which python3
/usr/local/bin/python3

Schreiben Sie einen Alias ​​in bash_profile

vi ~/.bash_profile  
alias python='/usr/local/bin/python3'

Laden Sie bash_profile neu

source ~/.bash_profile

Bestätigen Sie den Python-Befehl

$ python --version
Python 3.6.5
Ryosuke Hujisawa
quelle
2
Das ist eine schlechte Lösung. Wie in der akzeptierten Antwort erwähnt, $ pythonist es für Python 2 reserviert. Jedes Programm, das Sie auf Ihrem Computer ausführen und das Python 2 erwartet, erhält dann aufgrund des Alias ​​Python 3, was unvorhergesehene negative Folgen haben kann.
Shonin
Apples Absichten sind für die Frage irrelevant.
Duane
45

Unter Mac OS X mit dem Installationsprogramm python.org, wie Sie es anscheinend haben, müssen Sie Python 3 python3nicht aufrufen python. Dies ist derzeit für Python 2-Versionen reserviert. Sie können python3.2diese Version auch speziell aufrufen.

$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ cd /Library/Frameworks/Python.framework/Versions/3.2/bin/
$ ls -l
total 384
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 2to3@ -> 2to3-3.2
-rwxrwxr-x  1 root  admin    140 Feb 20 11:14 2to3-3.2*
lrwxr-xr-x  1 root  admin      7 Apr 28 15:51 idle3@ -> idle3.2
-rwxrwxr-x  1 root  admin    138 Feb 20 11:14 idle3.2*
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 pydoc3@ -> pydoc3.2
-rwxrwxr-x  1 root  admin    123 Feb 20 11:14 pydoc3.2*
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3*
lrwxr-xr-x  1 root  admin     12 Apr 28 15:51 python3-32@ -> python3.2-32
lrwxr-xr-x  1 root  admin     16 Apr 28 15:51 python3-config@ -> python3.2-config
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 python3.2-32*
lrwxr-xr-x  1 root  admin     17 Apr 28 15:51 python3.2-config@ -> python3.2m-config
-rwxrwxr-x  1 root  admin  25784 Feb 20 11:14 python3.2m*
-rwxrwxr-x  1 root  admin   1865 Feb 20 11:14 python3.2m-config*
lrwxr-xr-x  1 root  admin     10 Apr 28 15:51 pythonw3@ -> pythonw3.2
lrwxr-xr-x  1 root  admin     13 Apr 28 15:51 pythonw3-32@ -> pythonw3.2-32
-rwxrwxr-x  1 root  admin  25624 Feb 20 11:14 pythonw3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 pythonw3.2-32*

Wenn Sie auch Python 2 von python.org installiert hätten, hätte es ein ähnliches Framework-Bin-Verzeichnis ohne überlappende Dateinamen (außer 2to3).

$ open /Applications/Python\ 2.7/Update\ Shell\ Profile.command
$ sh -l
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ cd /Library/Frameworks/Python.framework/Versions/2.7/bin
$ ls -l
total 288
-rwxrwxr-x  1 root  admin    150 Jul  3  2010 2to3*
lrwxr-x---  1 root  admin      7 Nov  8 23:14 idle@ -> idle2.7
-rwxrwxr-x  1 root  admin    138 Jul  3  2010 idle2.7*
lrwxr-x---  1 root  admin      8 Nov  8 23:14 pydoc@ -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Jul  3  2010 pydoc2.7*
lrwxr-x---  1 root  admin      9 Nov  8 23:14 python@ -> python2.7
lrwxr-x---  1 root  admin     16 Nov  8 23:14 python-config@ -> python2.7-config
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 python2.7*
-rwxrwxr-x  1 root  admin   1663 Jul  3  2010 python2.7-config*
lrwxr-x---  1 root  admin     10 Nov  8 23:14 pythonw@ -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 pythonw2.7*
lrwxr-x---  1 root  admin     11 Nov  8 23:14 smtpd.py@ -> smtpd2.7.py
-rwxrwxr-x  1 root  admin  18272 Jul  3  2010 smtpd2.7.py*
Ned Deily
quelle
Haben Sie einen Link dazu in Bezug auf "Derzeit für Python 2-Versionen reserviert"?
Wildcard
Wenn ich Python 3.4 und Python 3.7 habe und Python3 vom Terminal aus tippe, wird Python 3.4 und nicht 3.7 ausgeführt. Wie kann ich das beheben?
Ysh
31

Alte Frage, aber alternativ:

virtualenv --python=python3.5 .venv
source .venv/bin/activate
FreshPow
quelle
Sicher, aber wenn Sie nicht über die ausführbare Datei verfügen (z. B. Python3.5), funktioniert diese Lösung nicht.
Afshin Mehrabani
Ich denke, das deckt das ab, das stackoverflow.com/questions/5506110/…
FreshPow
19

Mach das Richtige, mach das Richtige!

---> Null Öffnen Sie Ihr Terminal,

--Erste Eingabe python -V, Es zeigt wahrscheinlich:

Python 2.7.10

- Zweitens Eingabe python3 -V, es zeigt wahrscheinlich:

Python 3.7.2

--Dritte Eingabe where pythonoder which python, Es zeigt wahrscheinlich:

/usr/bin/python

--- Viertens Eingabe where python3oder which python3, Es zeigt wahrscheinlich:

/usr/local/bin/python3

- Fügen Sie ~/.profile file or ~/.bash_profileunter Bash oder ~/.zshrcunter zsh die folgende Zeile am Ende Ihrer PATH-Umgebungsvariablendatei hinzu .

alias python='/usr/local/bin/python3'

ODER

alias python=python3

- Sechste Eingabe source ~/.bash_profileunter Bash oder source ~/.zshrcunter zsh.

- Beenden Sie das Terminal.

--- Öffnen Sie achte Ihr Terminal und geben python -VSie Folgendes ein : Es wird wahrscheinlich Folgendes angezeigt :

Python 3.7.2

Ich hatte es erfolgreich versucht.

Andere, das ~/.bash_profileunter zsh ist das nicht~/.bash_profile .

Die Umgebungsvariable PATH unter zsh stattdessen ~/.profile(oder ~/.bash_file) über~/.zshrc .

Hilf euch!

McAllister Bowman
quelle
16

Ändern Sie den "Standard" -Python, indem Sie ihn vor dem System-Python auf Ihrem Pfad platzieren, zum Beispiel:

export PATH=/usr/local/bin:$PATH
Adam Vandenberg
quelle
Ich gehe davon aus, dass Sie auf diese Weise etwas auf dem Mac kaputt machen könnten. Da gibt es viele Programme und Skripte, die den Alias ​​"Python" verwenden. Wenn sie plötzlich aufgrund der Prioritätsänderung in PATH auf Python3 und nicht auf Python2 zeigen, könnte dies etwas kaputt machen. Möglicherweise das gesamte Betriebssystem ... das ist jedoch meine Annahme und nicht getestet.
Aivoric
3
Jede Systemsoftware würde den vollständigen Pfad zum vom System bereitgestellten Python verwenden.
Adam Vandenberg
2

Laut einer schnellen Google-Suche gilt dieses Update nur für die aktuell geöffnete Shell. Es kann wahrscheinlich durch Eingabe von python3 behoben werden, da Mac und Linux ähnlich genug sind, damit solche Dinge zusammenfallen. Link zum Ergebnis der Google-Suche.

Wie Ninjagecko feststellte, wurden die meisten Programme noch nicht auf 3.x aktualisiert. Wenn Sie also den Standard-Python als 3.x verwenden, werden viele in Anwendungen verwendete Python-Skripte beschädigt.

Matt Habel
quelle
2

Ich verwende OS X 10.7.5 und Python 3.4.2. Wenn Sie eingeben python3und was Sie ausführen möchten, wird es mit Python 3 ausgeführt. Zum Beispiel pyhton3 test001.py. Daraufhin lief ein von mir erstelltes Testprogramm namens test001. Ich hoffe das hilft.

ITGM
quelle
5
Willkommen bei Stack Overflow! Es sieht so aus, als ob Ihre Antwort keine echte Antwort auf die gestellte Frage ist. Bitte beachten Sie stackoverflow.com/help/how-to-answer für Hilfe , wenn Sie es beheben möchten.
Andere
Ich habe STUNDEN damit verbracht, Python3 auf meinem Mac zum Laufen zu bringen - es stellte sich heraus, dass die Eingabe von "Python3" anstelle der alten "Python" den Trick machte.
YCode
1

Navigieren Sie zu:

Arbeitsplatz -> Eigenschaften -> Erweitert -> Umgebungsvariablen -> Systemvariablen

Angenommen, Sie haben bereits Python 2.7 in der Pfadvariablen hinzugefügt und möchten den Standardpfad in Python 3.x ändern

Fügen Sie dann den Pfad des Ordners python3.5.x vor dem Pfad python2.7 hinzu.

Öffnen Sie cmd: Geben Sie "python --version" ein.

Die Python-Version wird in Python 3.5.x geändert

Ankit Agrawal
quelle
3
Das ist Windows.
Charles Ross
Einige IDEs, die Terminals / cmds / consoles enthalten, verbreiten die Umgebungsvariablen. Starten Sie die IDE neu, um die Änderungen im eingebetteten Terminal abzurufen.
UselesssCat
0
sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s $(which python3) /usr/bin/python

Dies wird Skripte beschädigen, ist aber genau der Weg, um Python zu ändern. Sie sollten die Skripte auch neu schreiben, um nicht davon auszugehen, dass sie python2.x sind. Dies funktioniert unabhängig von dem Ort, an dem Sie anrufen systemoder exec.

duane
quelle
0

Kurzum: Ändern Sie den Pfad in Umgebungsvariablen!

Für Windows:

  • Fortgeschrittene System Settings > Advance (tab). Unten finden Sie'Environment Variables'

  • Doppelklicken Sie auf Path. Sie sehen den Pfad zu einer der Python-Installationen. Ändern Sie diesen in den Pfad Ihrer gewünschten Version.

amalik2205
quelle
0

Überprüfen Sie den Ausführungspfad von python3, in dem sich Bibliotheken befinden

$ which python3
/usr/local/bin/python3  some OS might have /usr/bin/python3

Öffnen Sie die Datei bash_profile und fügen Sie einen Alias ​​hinzu

vi ~/.bash_profile  
alias python='/usr/local/bin/python3' or alias python='/usr/bin/python3'

Laden Sie bash_profile neu, um die Änderungen zu übernehmen

source ~/.bash_profile

Führen Sie den Befehl python aus und prüfen Sie, ob er mit python3 geladen wird

$ python --version
Python 3.6.5
Javeed Shakeel
quelle