Scipy (und andere) Paket für Python

Alexander

Aargauer Weinapfel
Registriert
09.09.08
Beiträge
749
Hallo,

ich versuche zur Zeit das Scipy Paket für Python auf meinem MacBook zu installieren.
Ich hatte vor einiger Zeit schon einmal ein Problem mit iPython, welches ich auch hier im Forum gepostet hatte ( http://www.apfeltalk.de/community/threads/ipython-laesst-sich-nicht-starten.464897/ ). Das Problem hat sich glaube ich nun geklärt, was mir zum Teil bei der Installation von weiteren Paketen geholfen hat.
Das Problem damals war, dass ich iPython mit Macports installiert hatte und somit für die mit Macports installierte Version von Python gedacht war. Diese Version ruft man glaube ich mit py27 auf. Die von Apple mitgelieferte Python Version hingegen mit python. Damals war also der Aufruf von iPython nicht richtig und mir war damals noch nicht bewusst, dass Macports eine weitere Python Version auf meinem Mac installiert hatte.
Der Plan war nun einige Pakete wie Numpy, iPython und Scipy zu installieren, jedoch für die on-board Python Version. Dazu habe ich pip mittels get-pip.py installiert. Durch Aufruf mittels "python" sollte pip ja nun für die on-board Version installiert werden. Was soweit ich das sehen kann auch funktioniert hat, da pip in /Library/Python/2.7/site-packages abgelegt wurde.
Ich konnte nun zumindest mit "pip install numpy" das Numpy-Paket an ebendiesen Ort installieren. Zuvor musste ich jedoch eine alte Numpy-Version löschen. Am Ort /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 habe ich einen Numpy-Ordner gefunden gehabt. Nach dessen Löschung funktionierte die Numpy Installation und mit der aktuellen Numpy-Version auch die Installation von Matplotlib, alle in den site-packages Ordner. Soweit müsste das also passen und sich auf die on-board Version beziehen.
Nur leider funktioniert die Installation vom Scipy-Paket nicht. Rufe ich "pip install scipy" auf, kommt irgendwann folgende Meldung:
Code:
ustomize UnixCCompiler
customize UnixCCompiler using build_clib
customize Gnu95FCompiler
Could not locate executable gfortran
Could not locate executable f95
customize NAGFCompiler
customize AbsoftFCompiler
Could not locate executable f90
Could not locate executable f77
customize IBMFCompiler
Could not locate executable xlf90
Could not locate executable xlf
customize IntelFCompiler
Could not locate executable ifort
Could not locate executable ifc
customize GnuFCompiler
Could not locate executable g77
customize G95FCompiler
Could not locate executable g95
customize PGroupFCompiler
Could not locate executable pgfortran
don't know how to compile Fortran code on platform 'posix'
building 'dfftpack' library
error: library dfftpack has Fortran sources but no Fortran compiler found

Kann hier jemand etwas damit anfangen und mir sagen wie ich das Problem beheben kann?

Viele Grüße
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Dir fehlt wohl der Fortran-Compiler. Versuche mal das:

Code:
brew install gfortran

Falls du Homebrew noch nicht installiert hast, wäre das ein guter Zeitpunkt. :)
 

Alexander

Aargauer Weinapfel
Registriert
09.09.08
Beiträge
749
Kann man den auch irgendwie über Xcode beziehen? Mit den Commandlinetools hatte ich damals schon irgendwelche Compiler glaube ich bekommen.
Homebrew habe ich noch nicht, ich hatte mich damals für Macports entschieden.

Ich habe eben noch entdeckt, dass Numpy, Scipy und Matplotlib zumindest unter Yosemite mitgeliefert sind. Auf meinem MacBook mit Lion ist dies noch nicht der Fall.

EDIT:
Nach weiterem Rumrumprobieren bin ich nun noch auf den Befehl
port select --list python
bzw. --set gekommen, um zunächst einmal Python mit allen Paketen am Laufen zu haben, bevor ich die on-board Version irgendwie weiter verpfusch.
Mit dem Befehl lässt sich ja zwischen den Versionen wählen, welche man installiert hat. So zum Beispiel python27. Nun sind dort ja auch die on-board Versionen gelistet mit dem Zusatz -apple. Schätze ich zumindest mal.
Ich habe nun zunächst einmal das Macports Python python27 selected. Was, soweit ich das verstehe, zu einem Link in /opt/local/bin führt, der auf das eigentliche Programm in irgendeinem Frameworkunterordner von /opt/local/..
zeigt. Mir kamen da nun zwei Fragen, die wahrscheinlich keine Auswirkung haben ob das Programm läuft oder nicht. Mich in dem Zusammenhang aber interessieren würden.
Zum einen wird einem jetzt der /opt/local/ Link angezeigt, wenn man which python eingibt. Folglich startet man mit dem Befehl "python" nun die Macportsversion. Der alte Befehl wurde also vollständig von dem Programm ersetzt. Mich würde mal interessieren wie das gemacht wird. Wird irgendeine alte Referenz gelöscht, so dass ich nun das on-board Python gar nicht mehr aufrufen kann? Weil normal sollte doch zunächst in so Ordnern wie /usr/bin nach Programmen gesucht werden. Ich habe auch versucht gehabt, mittels
port select --set python_test python27
einen weiteren Aufruflink mit anderem Namen zu erstellen, so dass ich zwischen on-board und Macports Versionen wählen könnte. Aber das hat nicht geklappt.
Was ich noch nicht ganz verstehe, ist der Unterschied zwischen der Einstellung "none" und "pythonxx-apple", welche mit "port select --list python" ebenfalls angezeigt werden. Bevor ich irgendetwas eingestellt hatte, war "none" selected. Es wurde dann immer die on-board Version aufgerufen. Gleiches geschieht aber auch wenn ich "pythonxx-apple" auswähle, oder gar wieder "none". Gibt es dennoch einen Unterschied zwischen den beiden Einstellungen?

Falls sich jemand diesbezüglich auskennt wäre ich sehr dankbar für eine Antwort. Auch wenn eine solche Diskussion nicht direkt zum eigentlichen Thread passt.
 
Zuletzt bearbeitet:

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Zum einen wird einem jetzt der /opt/local/ Link angezeigt, wenn man which python eingibt. Folglich startet man mit dem Befehl "python" nun die Macportsversion. Der alte Befehl wurde also vollständig von dem Programm ersetzt. Mich würde mal interessieren wie das gemacht wird. Wird irgendeine alte Referenz gelöscht, so dass ich nun das on-board Python gar nicht mehr aufrufen kann? Weil normal sollte doch zunächst in so Ordnern wie /usr/bin nach Programmen gesucht werden.

Zwar habe ich mit Macports nicht so viel am Hut, aber diesen Sachverhalt kann man einfach erklären.

In der PATH-Variable wird spezifiziert, in welchen Ordnern nach Programmen gesucht werden soll. Dort steht auch die Reihenfolge fest. Das kannst du dir z.B. mit diesem Befehl anschauen:

Code:
env | grep PATH

Ich nehmen an, dass Macports neben den symbolischen Links zu den Programmen auch u.U. den PATH anpasst.