OSX 10.8 PIP matplotlib 'freetype/config/ftheader.h'-Datei nicht gefunden

OSX 10.8 PIP matplotlib 'freetype/config/ftheader.h'-Datei nicht gefunden

Ich entschuldige mich im Voraus, falls dieses Thema bereits besprochen wurde. Meine Situation scheint sich leicht von den anderen zu unterscheiden, da der Pfad zu meinen Dateien anders ist. Beim Versuch, matplotlib unter Mac OS X 10.8.5 zu installieren, wird der folgende Fehler zurückgegeben:

pip install matplotlib
# lots of install details here...
/usr/X11/include/ft2build.h:56:10: fatal error: 'freetype/config/ftheader.h' file not found
#include <freetype/config/ftheader.h>
         ^
1 error generated.
error: command 'clang' failed with exit status 1
----------------------------------------
Cleaning up...
Command /usr/bin/python -c "import setuptools, tokenize;__file__='/private/tmp/pip_build_root/matplotlib/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-ohMPzS-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /private/tmp/pip_build_root/matplotlib
Storing debug log for failure in /Users/administrator/Library/Logs/pip.log

Auf meinem Homebrew ist Folgendes installiert:

fontconfig
gfortran
jpeg
libtiff
pkg-config
freetype
libpng

Und ich verwende die Mac-Version von Python 2.7.2 unter /usr/bin/python

Also habe ich den Finder verwendet, um nach ftheader.h zu suchen, und er zeigt an, dass sich die Datei hier befindet:

/opt/X11/include/freetype2/freetype/config/ftheader.h

Meine Fragen sind:

  • Sucht matplotlib am falschen Ort nach ftheader.h?
  • Wenn ja, wie sage ich ihm, dass es an der richtigen Stelle suchen soll?
  • Oder liegt das Problem an einer anderen Ursache?

Danke schön!

Aktualisieren:

Dies scheint das Problem behoben zu haben:

sudo ln -s /usr/local/include/freetype2/ /usr/include/freetype

Dadurch wird ein symbolischer Link von /usr/include/freetype nach /usr/local/include/freetype2/ erstellt (wenn Sie auf /usr/include/freetype klicken, werden Sie zu /usr/local/include/freetype2/ umgeleitet). Bevor Sie den symbolischen Link erstellen, überprüfen Sie am besten, ob der erste Pfad auf Ihrem System korrekt ist. Der zweite Pfad wird erstellt, wenn er nicht existiert.

Nachdem ich den Symlink erstellt hatte, versuchte ich es sudo pip install matplotliberneut und dieses Mal wurde es erfolgreich installiert. Mucho Requisiten andieser Beitragfür die Idee! Ich werde mich wieder melden, wenn später ein Fehler auftritt.

Es ist auch erwähnenswert, dass einMatplotlib-Binärdateiexistiert.

Antwort1

Ich glaube nicht, dass es generell eine gute Idee ist, den Inhalt von /usr/include zu ändern (wie in einer anderen Antwort und in anderen ähnlichen Threads vorgeschlagen); das ist Apples „Eigentum“. Ein ähnlichesFrage zu StackOverflowempfiehlt im Kontext einer Homebrew-Installation stattdessen die Verknüpfung innerhalb von /usr/local/include, was sicherer ist, aber wahrscheinlich trotzdem keine gute Idee, da Homebrew dies beibehält.

Ich denke, eine bessere Lösung besteht darin, den Installationsanweisungen für Matplotlib zu folgen und eine setup.cfg-Datei zu verwenden, um die Speicherorte von Ressourcen anzugeben, die sich nicht dort befinden, wo sie erwartet werden. So können Sie dies tun, während pip die Installation verwaltet:

  1. Laden Sie die MPL-Quelle herunter und entpacken Sie sie in DIR (z. B. DIR=matplotlib-1.3.1).

  2. cd DIR, kopieren Sie „setup.cfg.template“ nach „setup.cfg“ und bearbeiten Sie den Abschnitt „Verzeichnisse“, sodass er wie folgt aussieht (vorausgesetzt, Sie haben freetype2 in /usr/local installiert, z. B. über Homebrew):

    [directories]
    # Uncomment to override the default basedir in setupext.py.
    # This can be a single directory or a comma-delimited list of directories.
    #basedirlist = /usr
    basedirlist = /usr/local/include/freetype2/
    
  3. Erstellen Sie matplotlib direkt (aber installieren Sie es nicht) über: python setup.py build_ext(dauert auf meinem MacBook Pro etwa eine Minute).

  4. Installieren Sie mit pip aus diesem Verzeichnis: pip install .(beachten Sie den Punkt!).

Pip erkennt es als Matplotlib und indiziert es entsprechend.

Als ich dies tat, hatte ich die Abhängigkeiten von mpl bereits installiert, daher bin ich nicht sicher, ob das Fehlen einiger davon dies komplizierter macht.

verwandte Informationen