2015-05-28 8 views
5

Nach dem Wechsel zu Python 3.4.3 von 2.7.9 (was ziemlich einfach war), möchte ich oft einige meiner Skripte mit Python 2.7.9 testen, bevor Sie sie mit Kollegen teilen. Ich benutze eine OSX-Yosemite-Plattform mit allem aus Homebrew kompiliert.Wie kann ich Homebrews Python und Pyenv zusammen leben lassen?

Die Situation war ziemlich hässlich (Einstellung PATH es und PYTHONPATH bei jedem Schritt) - bis ich pyenv entdeckte, die dies sehr leicht macht und leicht mit Homebrew installiert werden kann. So weit, ist es gut.

Allerdings, jetzt, wo ich diese Version von Python verwende, spielt es nicht unbedingt gut mit dem von Homebrew. Außerdem fand ich, dass ich auf das System des Python wechseln könnte und allgemeiner dass pyenv dass zugreifen konnte:

$ pyenv versions 
    system 
    2.7.9 
* 3.4.3 (set by /usr/local/var/pyenv/version) 

aber wie könnte ich auch Einträge hinzufügen, für die python von Homebrew zusammengestellt s?

Antwort

4

Sie können pyenv in Ihrem Home-Verzeichnis installieren (wie in pyenv der Installationsanleitung beschrieben) und dann einen Symlink an ~/.pyenv/versions-$(brew --cellar)/python erstellen:

ln -s $(brew --cellar python)/* ~/.pyenv/versions/ 

Die Art und Weise Homebrew funktioniert heute, wird dies sowohl 2 abholen .x und 3.x.

+0

Dies funktioniert nicht, wenn der Ordner Versionen bereits vorhanden ist und python3 nicht enthält. Ich bin mir auch ziemlich sicher, dass du gemeint hast: ln -s $ (brew -cellar)/python ~/.pyenv/-Versionen – misnomer

+1

Eigentlich musst du 'ln -s $ (brew --cellar python)/* ~ ausführen/.pyenv/Versionen'. Sonst wird die hinzugefügte Python-Version 'python' anstelle von' 2.7.0' genannt werden. – hanxue

+0

Da ich versucht habe, meine homebrew-installierten python3-Umgebungen in Pyenv aufzulisten, funktionierte folgendes für mich: 'ln -s $ (brew - Keller python3)/* ~/.pyenv/Versionen 'hat den Trick für mich – JacobWuzHere

3

Nun, wenn Sie die pyenv Pythons und Homebrew Pythons wollen, müssen Sie leben zusammen, um den Namen des Homebrew Python etwas anderes als die Version machen. Andernfalls werden sie mit den Verzeichnisnamen kollidieren, die Pyenv verwendet. Wenn Sie zum Beispiel pyenv python 2.7.11 und homebrew python 2.7.11 installieren möchten, könnten Sie so etwas tun.

for i in `ls $(brew --cellar python)/`; do 
    ln -s $(brew --cellar python)/$i $HOME/.pyenv/versions/$i-brew; 
done 

for i in `ls $(brew --cellar python3)/`; do 
    ln -s $(brew --cellar python)/$i $HOME/.pyenv/versions/$i-brew; 
done 

Im Wesentlichen wird dies ein Verzeichnis in $ HOME/.pyenv/Versionen angehängt mit '-brew' schaffen, so dass es nicht mit den pyenv Pythons kollidieren wird.

+0

Fehler im Symlink für python3; die "3" fehlt – farooqsadiq