wake-up-neo.com

Wechseln Sie unter Mac OS X zwischen Python 2.7 und Python 3.5

Im Allgemeinen verwende ich Python 2.7, installierte jedoch kürzlich Python 3.5 mit Miniconda unter Mac OS X. Für diese beiden Versionen von Python wurden unterschiedliche Bibliotheken installiert. Die Eingabe eines der Schlüsselwörter 'python' oder 'python3' in terminal ruft jetzt Python 3.5 auf, und 'python2' gibt '-bash: python2: Befehl nicht gefunden' zurück. Wie kann ich sie jetzt spezifisch mit den Aliasnamen 'python2' und 'python3' aufrufen?

Ich verwende derzeit OS X El Capitan.

38
Viswanath

IMHO, die beste Möglichkeit, zwei verschiedene Python-Versionen unter macOS zu verwenden, ist homebrew. Führen Sie nach der Installation von homebrew unter macOS die folgenden Befehle auf Ihrem Terminal aus.

brew install [email protected]
brew install python

Jetzt können Sie Python 2.7 ausführen, indem Sie python2 oder Python 3 aufrufen, indem Sie python3 aufrufen. Darüber hinaus können Sie virtualenv oder pyenv verwenden, um verschiedene Versionen von python-Umgebungen zu verwalten.

Ich habe miniconda nie persönlich verwendet, aber aus der Dokumentation sieht aus, als wäre sie pip und virtualenv in Kombination ähnlich.

63
forevergenin

Die Python-Binärdatei von OSX (Version 2) befindet sich unter /usr/bin/python.

wenn Sie which python verwenden, wird Ihnen mitgeteilt, wo der Befehl python aufgelöst wird. In der Regel werden Dritte in /usr/local/bin (was standardmäßig Vorrang vor /usr/bin hat) neu definiert. Um dies zu beheben, können Sie entweder /usr/bin/python direkt ausführen, um 2.x zu verwenden, oder die fehlerhafte Neudefinition finden (wahrscheinlich in /usr/local/bin oder an anderer Stelle in Ihrer PATH).

10
John Wilkey

Ich hatte bereits python3 installiert (über miniconda3) und musste nebenbei python2 installieren. In diesem Fall brew install python wird python2 nicht installieren, daher benötigen Sie brew install [email protected].

Alias ​​python2 bezieht sich jetzt auf python2.x von /usr/bin/python

und Alias ​​python3 verweist auf python3.x von /Users/ishandutta2007/miniconda3/bin/python

und Alias ​​python bezieht sich standardmäßig auf python3.

Um nun python als Alias ​​für python2 zu verwenden, fügte ich der .bashrc-Datei Folgendes hinzu 

alias python='/usr/bin/python'

Um als Standard zu python3 zurückzukehren, entfernen Sie diese Zeile bei Bedarf.

4
ishandutta2007

So setzen Sie die Python-Version auf 2.7 zurück, wenn Sie Anaconda3 (Python 3.6) unter MacOS High Sierra 10.13.5 installiert haben

Bearbeiten Sie die Datei .bash_profile in Ihrem Basisverzeichnis.

vi $ HOME/.bash_profile

hash aus der Zeile # export PATH = "/ Users/YOURUSERNAME/anaconda3/bin: $ PATH"

Schließen Sie die Shell wieder. Sie sollten 2.7 sehen, wenn Sie Python ausführen.

Wenn Sie 3.6 möchten, können Sie die anaconda3-Zeile in Ihrem bash-Profil einfach kommentieren.

Der Versuch, die Verknüpfung von Python zu lösen, endet in Mac OSX in Tränen.

Sie werden so etwas

unlink:/usr/bin/python: Vorgang nicht zulässig

Hoffe das hilft jemandem raus !! :) :)

2
Jace

Ähnlich wie bei John Wilkeys Antwort würde ich python2 ausführen, indem ich which python finde, etwas wie /usr/bin/python und dann ein alias in .bash_profile erstellt:

alias python2="/usr/bin/python"

Ich kann jetzt python3 ausführen, indem ich python und python2 durch Aufruf von python2 aufrufe.

2
E.Hazledine

Wenn Sie die Systeminstallation von Apple mit Python 2.7 verwenden möchten, beachten Sie, dass die in PEP 394 festgelegten Namensstandards nicht ganz eingehalten werden.

Sie enthält insbesondere die optionalen Symlinks mit dem Suffix 2.7, auf die Sie sich nicht verlassen sollen, und nicht die empfohlenen Symlinks mit dem Suffix 2, auf die Sie sich von () verlassen.


Wenn Sie dies beheben möchten, während Sie sich an Apples Python halten, können Sie eigene Symlinks erstellen:

$ cd <somewhere writable and in your PATH>
$ ln -s /usr/bin/python python2

Oder Aliasnamen in der bash-config:

alias python2 python2.7

Sie können dies auch für Apples 2to3, easy_install usw. tun, wenn Sie sie benötigen.

Sie sollten nicht versuchen, diese symbolischen Links in /usr/bin einzufügen, und definitiv versuchen Sie nicht, das, was bereits vorhanden ist, umzubenennen oder das Distutils-Setup in etwas PEP-kompatibler zu ändern Diese Dateien sind alle Teil des Betriebssystems und können von anderen Teilen des Betriebssystems verwendet werden. Ihre Änderungen können sogar bei einem geringfügigen Update von 10.13.5 auf 10.13.6 oder etwas überschrieben werden. Lassen Sie sie also in Ruhe und umgehen Sie sie wie oben beschrieben.


Alternativ können Sie:

  • Verwenden Sie einfach python2.7 anstelle von python2 in der Befehlszeile und in Ihren Shbangs usw. 
  • Verwenden Sie virtuelle Umgebungen oder Conda-Umgebungen. Die globale Variable python, python3, python2 usw. spielt keine Rolle, wenn Sie immer die lokale python der aktivierten Umgebung verwenden.
  • Stoppen Sie die Verwendung von Apples 2.7 und installieren Sie stattdessen eine ganze andere 2.7, wie die meisten anderen Antworten vermuten lassen. (Ich weiß nicht, warum so viele von ihnen auch vorschlagen, ein zweites 3.6 zu installieren. Das wird nur noch more Verwirrung hinzufügen, ohne dass dies von Vorteil ist.)
1
abarnert

Ich folge der Antwort von @John Wilkey.

Mein Alias ​​python wurde für die Darstellung von Python2.7 verwendet (befindet sich in /usr/bin) . Dem Standard-Python_path ist jedoch jetzt /usr/local/bin für python3 vorangestellt. Wenn ich python eingab, erhielt ich weder die Python-Version.

Ich habe versucht, in /usr/local/bin einen Link für python2 zu erstellen:

ln -s /usr/bin/python /usr/local/bin/

Es funktioniert, wenn python für python2 aufgerufen wird. 

1
Chinh Sutran