Wie kann ich Homebrew verwenden, um Python 2 und 3 auf einem Mac zu installieren?

146

Ich muss in der Lage sein, zwischen Python 2 und 3 hin und her zu wechseln. Wie mache ich das mit Homebrew, da ich mich nicht mit dem Pfad herumschlagen und in Schwierigkeiten geraten möchte? Im Moment habe ich 2.7 über Homebrew installiert.

MostafaMV
quelle
Vielleicht möchten Sie die Frage ändern, um die Homebrew-Referenz zu entfernen, da dies nicht unbedingt erforderlich ist, um Ihr Ziel zu erreichen (siehe meine Antwort unten zum Beispiel stackoverflow.com/a/49091638/2923369 )
Matt Schlobohm

Antworten:

288

Ich würde pyenv verwenden. Sie können es installieren:

$ brew install pyenv

Um pyenv in Ihrer Bash-Shell zu aktivieren, müssen Sie Folgendes ausführen:

$ eval "$(pyenv init -)"

Um dies beim Start automatisch für Bash zu tun, fügen Sie diese Zeile zu Ihrer hinzu ~/.bash_profile. 1

Verwendung:

Nachdem Sie pyenv installiert und aktiviert haben, können Sie verschiedene Python-Versionen installieren und auswählen, welche Sie verwenden möchten. Beispiel:

$ pyenv install 2.7.5

Sie können die installierten Versionen überprüfen mit:

$ pyenv versions

Und Sie können mit dem folgenden Befehl zwischen Python-Versionen wechseln:

$ pyenv global 3.3.1

Sie können auch eine Python-Version für das aktuelle Verzeichnis festlegen mit:

$ pyenv local 3.5.2

Sie können dies überprüfen, indem Sie Folgendes ausführen python --version:

$ python --version
Python 3.5.2

1 Homebrew hat Sie angewiesen, dies bei der Installation von pyenv zu tun, aber die Nachricht wurde entfernt . Für Zsh und andere Schalen können die genauen Schritte unterschiedlich sein.

Moliware
quelle
Dies ist die einfachste Lösung. Ich benutze dies derzeit für den Wechsel zwischen Python 3 und 2.7.x
Naz Mir
3
Wenn ich Python 2.7 bereits über Homebrew installiert habe, sollte ich mich um die Verwendung von Pyenv kümmern ? Kann ich über pyenv eine andere Python 2.7 installieren ?
Drake Guan
3
Ja, Sie können eine andere Python 2.7 über Pyenv installieren. Diese Python wird in $ PYENV_ROOT / version installiert. Die andere über Homebrew installierte Python 2.7 wird möglicherweise als "System" angezeigt, wenn Sie "Pyenv-Versionen" ausführen.
Moliware
5
Ich musste eval "$(pyenv init -)"mein .profile / .zshrc hinzufügen, damit pyenv funktioniert.
Rohmer
5
@ilciavo, müssen Sie möglicherweise eval "$(pyenv init -)"zu Ihrem ~ / .bash_profile
Jojanzing
77

Sie können beide Versionen gleichzeitig installieren.

Für Homebrew> = 1.5.0:

Seit dem 1. März 2018 wird die pythonFormel auf Python 3.x aktualisiert, während python@2speziell für Python 2.7 eine neue Formel hinzugefügt wird.

Hier finden Sie die Ankündigung von Änderungen oder das endgültige Dokument zur Verwendung von Homebrew für Python .

Für ältere Homebrew:

Für Python 2.x:

brew install python

Für Python 3.x:

brew install python3

Jetzt haben Sie beide Versionen auf Ihrem Computer installiert. Wenn Sie Version 2 verwenden möchten, verwenden Sie die pythonausführbare Datei. Wenn Sie Version 3 verwenden möchten, verwenden Sie die python3ausführbare Datei.

Lenin Raj Rajasekaran
quelle
Die Frage ist über beide
Meduz
Danke für das Update! Ich folgte einem ähnlichen Weg, hatte aber Probleme damit, PYTHONPATHbei jeder Änderung etwas einstellen zu müssen ... irgendeine Idee? außerdem pyenvist es toll.
Meduz
9
Beachten Sie außerdem, dass Python2 und Python3 nebeneinander stehen und Python erwartungsgemäß auf Python2 und Python3 auf Python3 zeigt. Ein großes Problem ist jedoch, dass pip nicht wie erwartet auf pip2 zeigt. Es zeigt tatsächlich auf pip3 (wie natürlich pip3). Um pip2 zu verwenden, verwenden Sie explizit pip2. Ein bisschen inkonsistent mit dem Nicht-Zahlen-Suffix für Python-Punkt auf 2, aber dem Nicht-Zahlen-Suffix für Pip-Punkte auf 3.
JD
5
Dies bringt gängige ausführbare Dateien wie pip durcheinander. python3 überschreibt in diesem Fall python2 pip und das ist der Standardbefehl "pip"
kissgyorgy
1
Als Antwort auf @ kissgyorgy Kommentar: Ich hatte diese Frage, der letzte Kommentar zu diesem Thema es für mich gelöst github.com/Homebrew/legacy-homebrew/issues/50607 , läuft python3 -m pip install -U --force-reinstall pipdann python -m pip install -U --force-reinstall pipwieder die Dinge zu, die pipauf Python 2 ist verweisen pip.
Harry
11

Derzeit bietet Homebrew zwei verschiedene Formeln für Python 2 und 3. brew install pythonInstalliert Python3 und brew install python@2Python2. Weitere Details in den Homebrew-Dokumenten:

https://docs.brew.sh/Homebrew-and-Python

Wenn Sie derzeit 2.x über Homebrew installiert haben, erhalten Sie von Homebrew eine Meldung wie:

Error: python 2.7.14 is already installed
To upgrade to 3.6.5, run `brew upgrade python`

Wenn du läufst:

brew upgrade python

Sie sollten in der Lage sein:

python --version

und

python3 --version

Um zu sehen, welche Versionen von Python 2.x und 3.x installiert sind.

Guilherme Garnier
quelle
6

Alternativ können Sie wahrscheinlich einfach "python3" eingeben, um Ihre aktuellste Version von python3.x auszuführen, und "python" oder "python2", um die neueste installierte 2.x-Version auszuführen.

Fred Mitchell
quelle
4

Es gibt Möglichkeiten, beide zu verwenden, aber die einfachste Lösung besteht heute darin, pyenv zu verwenden . pyenv ermöglicht das einfache Umschalten zwischen Versionen. Folgendes habe ich getan, um einzurichten:

SCHRITT 1:

Entfernen Sie alle Pythons von Ihrem Mac

 brew uninstall --ignore-dependencies --force python
 sudo rm -rf ~/miniconda3/
 sudo rm -rf ~/.conda/

Entfernen Sie Folgendes aus ~/.bash_profile

export PATH="/Users/ishandutta2007/miniconda3/bin:$PATH"

und auch das folgende aus ~/.bashrc

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
export PYTHONPATH=/usr/local/lib/python2.7/site-packages/google:$PYTHONPATH
alias python="/usr/bin/python"

SCHRITT 2 :

Installieren Sie pyenv und die benötigten Python-Versionen

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

SCHRITT 3 :

pyenv initzu bash_profileoder hinzufügenbashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

SCHRITT 4 :

Überprüfen Sie, was installiert wurde

pyenv versions
  • System (festgelegt von /Users/ishandutta2007/.pyenv/version)

    2.7

    3.7.0

SCHRITT 5:

Wählen Sie eine Standardeinstellung

pyenv global 3.7.0

Wenn ein Projekt eine ältere Version benötigt, gehen Sie einfach in den Stammordner und führen Sie es aus

pyenv local 2.7
ishandutta2007
quelle
1

Verwenden Sie asdf !

Ballade von asdf

Es war einmal eine Programmiersprache.
Es gab viele Versionen davon.
Also haben die Leute einen Versionsmanager dafür geschrieben.
Um zwischen Versionen für Projekte zu wechseln.
Unterschiedlich, alt, neu.

Dann kamen mehr Programmiersprachen,
also kamen mehr Versionsmanager
und viele Befehle für sie

Ich habe viele davon installiert und
viele Befehle gelernt

Dann sagte ich nur noch einen Versionsmanager
, den ich stattdessen schreiben werde

Also kam ein anderer Versionsmanager als
asdf-Versionsmanager - https://github.com/asdf-vm/asdf

Ein so erweiterbarer Versionsmanager,
für den jeder ein Plugin erstellen kann.
Um seine Lieblingssprache zu unterstützen.
Keine Versionsmanager mehr installieren
oder mehr Befehle lernen

https://github.com/asdf-vm/asdf
https://github.com/tuvistavie/asdf-python
https://github.com/asdf-vm/asdf-plugins

Matt Schlobohm
quelle
Mir scheint, dass dies keine konkurrierenden Tools sind, sondern dasselbe Tool, das einmal (und manchmal mehr als einmal) pro Sprache implementiert wurde. Ein bisschen wie, warum wir auch so etwas wie den LSP brauchen, IMHO. microsoft.github.io/language-server-protocol/overview
Matt Schlobohm
1

Ich dachte, ich hätte die gleiche Anforderung - zwischen Python-Versionen zu wechseln -, aber ich habe alles, was ich brauchte, nur mit Python3.6 erreicht, indem ich aus dem Quellcode erstellt habe, anstatt es zu verwenden homebrew.

git clone https://git.<theThingYouWantToInstall>

Überprüfen Sie je nach Repo, ob für diese Option bereits eine MAKE-Datei eingerichtet ist.

rustyMagnet
quelle
1

Ich konnte einfach zu https://www.python.org/downloads/mac-osx/ gehen und die neueste Python herunterladen. Es wurde neben der aktuellen Python in meinem System installiert.

Christian Vielma
quelle
-3

Okay, ich hatte Probleme mit meiner Brew-Installation von Python3, weil ich kein Pip3 hatte

sudo pip3 command not found

und so tat ich es

brew uninstall --force --ignore-dependencies python3

und installierte das reguläre Python 3.6.2 aus der offiziellen Distribution und dann hatte ich pip3 und alle Komponenten waren in Ordnung.

Vladimir Stazhilov
quelle
OP fragt nach der Installation von beiden.
Ajeet Ganga