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

3266
fire_water

Ich entschuldige mich im Voraus, wenn dieses Thema bereits besprochen wurde. Meine Situation scheint sich geringfügig von den anderen zu unterscheiden, so dass der Pfad zu meinen Dateien unterschiedlich ist. Bei dem 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 

Mein Homebrew hat 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 benutzt, um nach ftheader.h zu suchen, und die Datei befindet sich unter:

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

Meine Fragen sind:

  • Sucht matplotlib ftheader.h am falschen Ort?
  • Wenn ja, wie sage ich es an der richtigen Stelle?
  • Oder verursacht etwas anderes das Problem?

Vielen Dank!

Update :

Dies scheint das Problem behoben zu haben:

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

Dadurch wird ein Symlink 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 Symlink erstellen, überprüfen Sie am besten, ob der erste Pfad auf Ihrem System korrekt ist. Der zweite Pfad wird erstellt, wenn er nicht vorhanden ist.

Nach dem Erstellen des Symlinks habe ich es sudo pip install matplotliberneut versucht und diesmal erfolgreich installiert. Mucho Requisiten zu diesem Beitrag für die Idee! Ich werde mich melden, wenn später ein Fehler auftritt.

Es ist auch erwähnenswert, dass eine Matplotlib-Binärdatei existiert.

3
Ich habe auch dieses Problem. Ich denke, es war ein Upgrade auf libpng, das alles kaputt gemacht hat Zach vor 10 Jahren 0
+1 für den Sym-Link. Hatte das gleiche Problem und das Erstellen des Sym-Links ermöglichte mir die Installation und Verwendung von matplotlib danengle vor 10 Jahren 0

1 Antwort auf die Frage

5
Tom Loredo

Ich halte es nicht für angebracht, den Inhalt von / usr / include (wie in einer anderen Antwort und in anderen ähnlichen Threads vorgeschlagen) zu ändern. das ist Apples "Eigentum". Eine ähnliche Frage zu StackOverflow im Rahmen einer Homebrew-Installation empfiehlt stattdessen das Verknüpfen innerhalb von / usr / local / include, was sicherer ist, aber wahrscheinlich keine gute Idee ist, da Homebrew dies behauptet.

Ich denke, eine bessere Lösung ist es, die Installationsanweisungen von matplotlib zu befolgen und eine Datei setup.cfg zu verwenden, um die Speicherorte der Ressourcen anzugeben, an denen sie nicht erwartet werden. Um dies zu 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 DIRKopieren Sie 'setup.cfg.template' in 'setup.cfg' und bearbeiten Sie den Verzeichnisbereich wie folgt (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 an Ort und Stelle (aber installieren Sie es nicht) mit: python setup.py build_ext(dauert etwa eine Minute auf meinem MacBook Pro).

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

Pip wird es als Matplotlib und Index entsprechend erkennen.

Ich hatte bereits mpls Abhängigkeiten installiert, als ich dies tat, daher bin ich mir nicht sicher, ob das Fehlen einiger davon dies erschwert.