Der vorgeschlagene Weg, um pip (easy_install) mit Homebrew zu handhaben?

2912
Drake Guan

Ich weiß, dass es einen Brew-Gem und einen Brew-Pip gibt, aber es ist immer noch sehr leicht, verwirrt zu werden. Nehmen wir an, mein Mac OS X ist 10.7.2.

  • Soweit ich weiß, gibt es mindestens 3 Standorte für Python-Module (angenommen 2.7):
    1. /System/Library/Frameworks/Python.framework/Versions/2.7/
    2. /Library/Python/2.7/site-packages
    3. /usr/local/lib/python2.7/site-packages/ (innerhalb des Homebrews gesteuert)
  • Für einige Python - Modulen, pip sie in installieren 2, die so genannte lokale / maßgeschneiderte Python - Modul Lage, und alles sieht und funktioniert super. Ex, readline von easy_install ( ipython hat mir vorgeschlagen, readline von easy_install anstelle von pip zu installieren )
  • Für einige würde es versuchen, einige andere Dateien (ex, man, doc, ...) an einem systemweiten Speicherort zu installieren, was sudo ! Beispiel: ipython bestand darauf, man und doc in /System/Library/Frameworks/Python.framework/Versions/2.7/share/ zu installieren. Dies verstößt gegen das Berechtigungsproblem und alles, was ich tun kann, ist die Verwendung von sudo .
  • Bei einigen von brew installierten Python-Modulen sind sie symbolisch mit /usr/local/lib/python2.7/site-packages/ verknüpft . Alles scheint großartig, außer dass Sie daran denken müssen, diesen Ort in PYTHONPATH einzufügen .

Ich frage mich, ob es einen vorgeschlagenen und einheitlichen Weg gibt, mit dieser Masse umzugehen, oder eine Erklärung, um das Zeug kristallklar zu machen.

5
Ich habe keine klare Lösung, außer vielleicht ein paar Installationsmethoden. dsummersl vor 11 Jahren 0

2 Antworten auf die Frage

3
m000

Vielleicht ist es an der Zeit, Virtualenv zu nutzen . Virtualenv erstellt in sich geschlossene Python-Umgebungen mit der von Ihnen angegebenen Python-Version. Nachdem Sie die neue virtuelle Umgebung aktiviert haben, wird alles, was Sie mit pip installieren, in dieser Umgebung gespeichert. Dies hilft, Situationen wie die von Ihnen beschriebene zu vermeiden.

Erstellen und aktivieren Sie z. B. eine neue Python-Umgebung mit dem Standard-Python:

# create environment $ virtualenv --distribute myproject New python executable in myproject/bin/python Installing distribute...done. Installing pip...done.  # activate environment $ . ./myproject/bin/activate  # check default python (myproject)$ which python /Users/me/myproject/bin/python 

Es wird empfohlen, die --distributeOptionen zu verwenden, um anzugeben, dass die Verteilung zum Installieren von Paketen in der neuen Umgebung anstelle von (den älteren) setuptools verwendet werden soll. Nach der Aktivierung ändert sich die Eingabeaufforderung, um anzuzeigen, welche Python-Umgebung aktiv ist.

Installieren Sie jetzt ein Paket. Die Dateien werden in mein Projektverzeichnis verschoben:

# install django (myproject)$ pip install django ...  # search for django dir (myproject)$ find myproject -iname django myproject/lib/python2.7/site-packages/django 

Zum Schluss deaktivieren Sie:

# deactivate and check for default python (myproject)$ deactivate $ which python /usr/bin/python 

So erstellen Sie eine Umgebung mit einer nicht standardmäßigen Python-Version:

$ virtualenv --distribute -p /path/to/custom/python mynewproject 

Standardmäßig kopiert virtualenv alle Pakete, die für die Python-Version, die Sie zum Booten verwenden, installiert sind, in die neue Umgebung. Um dies zu verhindern und eine leere Umgebung zu erstellen, verwenden Sie die --no-site-packagesOption. Dies ist besonders nützlich, um Umgebungen zu erstellen, die exakt reproduziert werden können, z. B. von der Entwicklung bis zur Produktion.

Update: Ab Version 1.7 --no-site-packagesist das Standardverhalten von virtualenv geworden.

Wenn Sie mehr Details wünschen, gibt es viele Tutorials und Blogbeiträge online. Z.B:

  1. Hinweise zur Verwendung von pip und virtualenv mit Django. (Die meisten Beiträge sind nicht für Djangos spezifisch)
  2. Mit virtualenv arbeiten.

Probieren Sie es aus und ich bin mir sicher, dass Sie dabei bleiben werden.

Hinweis: Stellen Sie sicher, dass der Python-Interpreter für Ihre ausführbaren Skripts nicht fest codiert ist. Dh ihre erste Zeile sollte so #!/usr/bin/env pythonetwas sein und nicht #!/usr/bin/python.

Sie bleiben dabei, bis `pip install scipy` oder` PySide` oder `PyQt4` fehlschlägt. Dann werden wir wissen, wie Sie am besten installierte Module unter Mac OSX Lion verschieben können. hobs vor 11 Jahren 0
Was meinst du mit "bewegen"? Die ganze Idee ist, dass Sie Ihre Module in Ihrer virtuellen Umgebung installieren und keine systemweiten Installationsorte verwenden. m000 vor 11 Jahren 0
Zu Ihrer Information, einfach ausprobiert und scipy installiert sich wie ein Zauber in virtualenv. Es gab ein paar kleinere Probleme (numpy nicht als dep aufgeführt, ich hatte keinen Fortran-Compiler installiert), aber nichts Rätselhaftes oder schwer zu überwinden. Ich würde wetten, dass auch die anderen beiden Module kein Problem haben werden, vorausgesetzt, Sie haben die erforderlichen nativen Bibliotheken und Header mit brew installiert. Wenn Sie ein spezifisches Problem mit Ihrer Installation haben, stellen Sie bitte eine neue Frage mit den Details und rufen Sie nicht einfach BS an, um eine Lösung zu finden, die für diese Frage geeignet ist und für die meisten Fälle funktionieren sollte. m000 vor 11 Jahren 0
Ich liebe virtualenv und virtualenvwrapper und verwende sie unter Mac OS X. Aber ich konnte ipython mit pyqt und scipy usw. nur mit brew installieren. Mit "Umzug" meine ich einen Link zu den entsprechenden globalen Site-Paketen aus den Venv-Site-Paketen. Das war es, was ich am Ende tun musste, um ipython + pyqt + matplotlib + scipy in einem Virtualenv auf meinem Lion Mac arbeiten zu lassen hobs vor 11 Jahren 0
0
Randall Hunt

Meine Vorschläge:

  1. Installieren Sie das xcode-Kommandozeilen-Tools-Paket über Xcode -> Voreinstellungen -> Downloads -> Komponenten : xcode

  2. Installieren Sie Homebrew (aktualisieren Sie Ihren Weg in .profile, .SHELLrcoder was auch immer schließen, /usr/local/bin bevor das System standardmäßig wie /usr/bin).

  3. Für Python installieren Sie zunächst alle Voraussetzungen selbst:

    • brew install readline sqlite gdbm pkg-config
    • brew install python --framework --universal
    • Aktualisieren Sie Ihren Pfad so, dass er die richtigen Distutils verwendet: export PATH=/usr/local/share/python:$PATH
  4. easy_install pip

  5. pip install virtualenv
  6. pip install virtualenvwrapper
  7. Umfassen export PYTHONPATH=/usr/local/lib/python:$PYTHONPATH
Beeindruckend! Sie entfernen das eingebaute Python-Zeug und machen ein Symbol für das Homebrew-Material ?! Wirklich riskant. Drake Guan vor 11 Jahren 0
Der eingebaute Python ist sowieso schrecklich - nichts im Betriebssystem hängt davon ab. Randall Hunt vor 11 Jahren 0
Interessanter Ansatz - Beachten Sie, dass in Schritt 4 "easy_install" ein einzelner Befehl ist und nicht zwei Wörter. RichVel vor 5 Jahren 0