2014-10-11 13 views
6

Ich versuche, den grundlegenden scipy Stapel (numpy, scipy, matplotlib, Pandas, sympy, ipython, Nase) in einen virtualenv zu installieren; Derzeit verwende ich OSX Mountain Lion. Von den Installationsseiten für diese Pakete, sowie verschiedenen Threads hier und im Web, scheint es, dass Pandas, Sympy und Nose leicht mit nur Pip installiert werden können (obwohl einige Listen numpy/scipy/etc. Als Abhängigkeiten).Wie SciPy Stack mit Pip und Homebrew zu installieren?

Es scheint jedoch widersprüchliche und Art von verschachtelten Anweisungen für die ordnungsgemäße Installation von numpy, scipy, matplotlib und bis zu einem gewissen Grad ipython *. Die Installation ausschließlich mit Pip scheint nicht der richtige Weg zu sein, um diese Pakete zu installieren; Es scheint, dass einige Abhängigkeiten mit Homebrew installiert werden müssen, aber verschiedene Orte Liste verschiedene Pakete zu brauen Installation vor dem Pip Installation von numpy/scipy/etc. Gibt es eine umfassende und aktuelle Liste von Paketabhängigkeiten, die mit Homebrew installiert werden müssen, bevor pip installiert numpy, scipy und matplotlib?

Nur als eine Anmerkung, ich habe geguckt Homebrew/Python zum Installieren von numpy, scipy und matplotlib richtig mit Homebrew, aber ich möchte in einem virtualenv installieren und ich glaube nicht, dass ich Homebrew verwenden kann Das.

Jede Hilfe würde sehr geschätzt werden; Danke im Voraus!

* Auch für ipython, sagt der Installationsseite, dass pip installieren ipython [alles] sollte ausreichend sein, aber einige andere Quellen (http://www.coderstart.com/setup/python-setup.html; http://www.lowindata.com/2013/installing-scientific-python-on-mac-os-x/) scheinen darauf hinzudeuten, dass die qt, pyqt und ZMQ Pakete müssen Gebräu sein zuerst installiert, bevor pip ipython installiert wird; Ist die Homebrew-Installation notwendig oder ist es in Ordnung, pip einfach nach der ipython-Installationsseite zu installieren?

Antwort

10

hier meine eigene Frage zu beantworten, aber hoffentlich das ist hilfreich; fühlen Sie sich frei, wenn es irgendwelche Fehler gibt. Die ursprüngliche Version ist eine gigantische Textwand, also habe ich einen tl; dr nach oben hinzugefügt mit nur den Schritten, um den Prozess hoffentlich klarer zu machen.

tl; dr: In Terminal/Bash, gehen Sie in einen virtualenv (wenn Sie in einem installieren möchten) und geben Sie diese Befehle in der Reihenfolge ein. Dies wird für OSX Mountain Lion getestet.

pip install numpy 
brew install gcc 
pip install scipy 
brew install freetype 
pip install matplotlib 
pip install nose 
pip install pandas 
pip install sympy 
pip install ipython[all] 
brew install pyqt 
brew install qt 
brew install sip 
echo "export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH" >> ~/.bash_profile 
source ~/.bash_profile 

* Hinweise: brew installation pyqt könnte bereits qt und sip installieren; Wenn dies der Fall ist, müssen qt und sip nach der Installation von pyqt nicht installiert werden. Für die vorletzte Zeile ist es möglicherweise zuverlässiger, direkt diese Zeile in ~/.bash_profile einzufügen, da sie möglicherweise am Anfang des ~/.bash_profile-Inhalts stehen muss. Brew install pandoc ist optional, aber notwendig für ipython notebook nbconvert Befehl funktioniert ordnungsgemäß.

bearbeiten 10/13/14[siehe bearbeiten unten]: Bearbeitung PYTHONPATH in ~/.bash_profile Kräfte virtuellen Umgebungen globale Pakete zu erben; Wenn Sie isolierte Umgebungen erstellen möchten, machen Sie nicht die letzten zwei Schritte. Wenn virtualenvwrapper installiert ist, bearbeiten Sie stattdessen die lokalen postctivate- und predeactivate-Skripte im bin-Verzeichnis unter dem virtualenv, das den scipy-Kram enthält.

In postactivate ein:

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH 

In predeactivate ein:

unset PYTHONPATH 

Diese PYTHONPATH bearbeiten sollte, wenn, wenn die virtualenv mit scipy Material aktiviert wird, so dass ipython qtconsole funktioniert, aber sollte zurückgesetzt PYTHONPATH wenn der virtualenv deaktiviert ist, so dass andere virtualenv von PYTHONPATH Änderungen nicht betroffen sind.


Unten ist die lange Erzählversion.

Wie auch immer, von einigen Versuch und Irrtum, nachdem ich ursprünglich die Frage gestellt habe, fand ich, dass die folgenden Schritte funktionieren; Ich habe die beiden Anweisungen, die ich oben verlinkt habe, als allgemeine Anleitungen verwendet, und dies wurde auf OSX Mountain Lion getestet.

Nach dem Aktivieren der Virtualenv, in dem die Pakete installiert werden, zuerst pip installieren numpy; Dies sollte wie erwartet funktionieren und numpy sollte installiert sein (beachten Sie, dass numpy zuerst installiert werden sollte, da viele andere Pakete im scipy-Stack von numpy abhängig sind).

Nun, vor der Installation von scipy, mehrere Quellen beachten, dass gfortran (dies scheint am häufigsten zu sein, aber ich denke, jeder Fortran-Compiler sollte funktionieren) muss installiert werden; brew install gfortran gibt einen Fehler zurück, der besagt, dass gcc nun gfortran enthält, sodass die gfortran-Formel veraltet ist. Daher brauen wir install gcc (beachten Sie, dass, obwohl xcode Befehlszeilen-Tools, die in der Regel vor Homebrew installiert ist, bereits gcc enthält, seine Version von gcc irgendwie nicht funktioniert oder gfortran nicht enthält). Nach der Installation von gcc funktioniert pip install scipy wie erwartet, und scipy sollte installiert sein. Schnell beiseite: brew install gcc installiert gcc sowie eine Reihe von Abhängigkeiten, nämlich Cloog, gcc, gmp, isl, libmpc, mpfr. [Diese sollten alle in/usr/local/Cellar installiert werden, was der Standard-Installationsort für Homebrew ist.]

Für die Installation von matplotlib muss Freetype zuerst installiert werden, also brauen wir FreeType installieren; Dies sollte Freetype und Libpng installieren, was eine Freetype-Abhängigkeit zu sein scheint. Danach funktioniert pip install matplotlib wie erwartet und installiert matplotlib erfolgreich. Beachten Sie, dass matplotlib mit mock (erforderlich für die Ausführung der Matplotlib-Testsuite), pyparsing (erforderlich für die Unterstützung von mathtext), python-dateitil (erforderlich für die Unterstützung von Datumsachsen), sechs (ohne Angabe von Gründen) und matchplotlib installiert wird. [Diese sollten alle zusammen mit anderen Pip-Installationen in einem virtualenv in das site-packages-Verzeichnis innerhalb des virtualenv installiert werden.]

Für die Installation von nose, sympy und pandas ist lediglich eine Pip-Installation erforderlich, da diese nicht vorhanden sind alle Abhängigkeiten, die installiert werden müssen. Beachten Sie jedoch, dass zumindest Pandas von numpy abhängen. Daher ist es wahrscheinlich vorzuziehen, Pandas (nicht sicher über die anderen) nach der Installation von numpy zu installieren. Beachten Sie auch, dass pandas mit pytz installiert wird (für Zeitzonenberechnungen).

Die Installation von ipython ist ziemlich einfach, aber die Einrichtung ist etwas komplizierter. Als eine Überschrift kann ipython sowohl mit einer qt-Konsole als auch mit einem sogenannten ipython-Notizbuch verwendet werden, die verschiedene Vorteile haben. Sie können wählen, einfach ipython mit pip install ipython zu installieren und optionale Abhängigkeiten später bei Bedarf zu installieren, aber ich habe alle wichtigen optionalen Abhängigkeiten mit pip install ipython [all] installiert. Dies installiert ipython zusammen mit vielen anderen Paketabhängigkeiten (installiert mit backports.ssl-match-hostname (von tornado), certifi (von tornado), docutils (von sphinx), gnureadline, ipython, jinja2, markupsafe (von jinja2) , numpydoc (von ipython [alle]), pygments, pyzmq, sphinx, tornado).Dies sollte eine gute Grundlage für ipython sein, um sowohl die Standard-Ipython-Shell als auch die Qt-Konsole und das Ipython-Notebook zu verwenden. Es ist jedoch nicht vollständig eingerichtet, wenn Sie entweder die QT-Konsole oder das Notebook verwenden möchten.

Um die qt-Konsole verwenden zu können, müssen die Pakete pyqt, qt und sip installiert sein, da es sich um Abhängigkeiten handelt, die nicht mit pip installiert werden können. Aus Erfahrung scheint brew install pyqt alle drei Pakete zu installieren, aber die Installation der drei Pakete könnte eine sicherere Wette sein. Danach gehe in ~/.bash_profile und füge die Zeile 'export PYTHONPATH =/usr/local/lib/python2.7/site-packages: $ PYTHONPATH' hinzu; dann 'source ~/.bash_profile' im Terminal, um die Shell neu zu laden. Dies sollte erfolgreich ermöglichen, dass die qt-Konsole gestartet wird. [Ich bin nicht ganz sicher, warum diese Zeile hinzugefügt werden muss, da ich bereits die PATH-Variable bearbeitet hatte, um/usr/local/bin vor/usr/bin zu setzen, aber vielleicht versuchten qt/pyqt/sip noch, sich zu verlinken mit dem System Standard Python anstelle von Homebrew installiert Python.]

Das Notebook scheint so gut wie aus der Box so weit wie ich gesehen habe, aber es gibt eine Sache der Notiz: um nbconvert zu verwenden (das Notebook umwandeln zu verschiedenen Dateiformaten), muss das Pandoc-Paket installiert werden, vermutlich mit Homebrew. Wie qt/pyqt/sip, kann es nicht mit pip installiert werden, weshalb es nicht mit pip install ipython [all] installiert wurde.

bearbeitet 10/13/14: So offenbar, PYTHONPATH Bearbeitung leere virtuelle Umgebungen zunichte gemacht werden, die globalen Pakete auch in einer virtualenv (how to isolate virtualenv from local dist-packages?) zu machen; Dies, zum größten Teil, vereitelt den Zweck eines virtualenv, unter der Annahme, dass Sie eine frische Umgebung wollen, aber ist notwendig, damit ipython qtconsole richtig funktioniert.

Der Fix ist zu bearbeiten (vorausgesetzt, virtualenvwrapper installiert ist) die lokalen postctivactivate und predeactivate Skripte in der bin-Datei Ihres virtualenv. In postactivate, geben Sie die Zeile "export PYTHONPATH =/usr/local/lib/python2.7/site-packages: $ PYTHONPATH; in predeactivate, geben Sie die Zeile" reset PYTHONPATH ". Führen Sie nicht die letzten beiden Schritte des Originals sequenz, oder lösche die Zeile, die zu ~/bash_profile hinzugefügt wurde.Dies sollte es so machen, dass die Änderungen an PYTHONPATH nur dann vorgenommen werden, wenn das virtualenv mit unseren installierten Paketen aktiviert ist, so dass qtconsole funktioniert, aber vor dem Deaktivieren des virtualenv zurückgesetzt wird,

+0

Die Beantwortung Ihrer eigenen Frage ist in Ordnung , aber diese narrative Textwand ist etwas abwegig, da es sich bei dieser Prozedur im Wesentlichen um eine Reihe von Shell-Befehlen handelt, wäre es nützlich _exactly_ was Sie als Code-formatierte Zeilen ausgeführt haben. Ich vermute, dass – Deditos

+0

[Erratum] Ich vermute, dass einige Benutzer Tippfehler machen und es wird schwierig für sie sein, gegen Ihre Antwort zu überprüfen. – Deditos

+0

@Deditos Hm, yeah, danke für das Hinzeigen! Ich glaube, ich war etwas zu aufgeregt und ließ mich von der Beschreibung mitreißen. Ich fühle mich schlecht, wenn ich all diese Erzählung lösche, aber ich werde die tl; dr bearbeiten, um klarer zu sein/Code-formatierte Zeilen einzuschließen und sie nach oben zu verschieben. – thereislight

1

Ich bin auf OSX 10.9, aber ich hatte viel Glück diese Anweisungen befolgen und in etwa die gleiche Umgebung, die Sie oben skizzierte http://hackercodex.com/guide/python-development-environment-on-mac-osx/

this helps

+0

Diese Anweisungen scheinen über die Installation von Python, Pip etc. auf einem neuen Mac, aber nicht über die ordnungsgemäße Einrichtung eines wissenschaftlichen Python virtualenv, aber trotzdem danke! – thereislight