Ich möchte PIL mit pip auf Mavericks installieren, erhalte aber diesen Fehler.
_imagingft.c:73:10: fatal error: 'freetype/fterrors.h' file not found
#include <freetype/fterrors.h>
^
1 error generated.
error: command 'cc' failed with exit status 1
Meine Befehlszeilentools sind installiert und auf dem neuesten Stand. Jeder Hinweis, den ich gefunden habe, hat nicht geholfen. Wie kann ich das kompilieren lassen?
EDIT: Ich habe gerade geprüft, Freetype ist auch schon via Homebrew installiert
Anstatt eine Verknüpfung zu einer bestimmten Version von freetype2 herzustellen, gehen Sie wie folgt vor:
ln -s /usr/local/include/freetype2 /usr/local/include/freetype
Dies erspart Ihnen die Mühe, den Symlink bei jedem Upgrade von freetype2 neu zu erstellen.
Mit macports funktionierte die Lösung für mich:
Sudo port install freetype
Sudo ln -s /opt/local/include/freetype2 /opt/local/include/freetype
Führen Sie dann den PIL-Erstellungsprozess erneut aus.
Ich habe dieses Problem mit diesem Symlink gelöst:
ln -s /usr/local/Cellar/freetype/2.5.1/include/freetype2 /usr/local/include/freetype
Ich habe Freetype auch schon über Homebrew installiert.
Dies wird durch eine Änderung der Überschriften von freetype> = 2.1.5 verursacht. PIL verwendet nicht die korrekt dokumentierte Methode, um die Freetype-Header einzuschließen. Dies führt dazu, dass der Build fehlschlägt, da Freetype die lang veraltete Methode zum Einschließen der Header endgültig entfernt hat. Dieses Problem ist oben in http://freetype.sourceforge.net/freetype2/docs/tutorial/step1.html dokumentiert:
HINWEIS: Ab FreeType 2.1.6 wird das alte Schema für die Aufnahme von Header-Dateien nicht mehr unterstützt. Dies bedeutet, dass Sie jetzt eine Fehlermeldung erhalten, wenn Sie Folgendes tun:
#include <freetype/freetype.h>
# include <freetype/ftglyph.h>
Bitte übermitteln Sie dieses Problem den Entwicklern von PIL und raten Sie ihnen, die dokumentierte Methode zum Einfügen von Freetype-Headern zu verwenden:
#include <ft2build.h>
#include FT_ERRORS_H
Nach vielen Versuchen habe ich dieses Problem gelöst, indem ich die PIL ohne Freetype-Unterstützung kompiliert habe. Dazu habe ich einfach die Verknüpfung zu meinem $ PATH mit brew unlink freetype
Und dann mit pip install PIL==1.1.7
Aufgehoben.
Ich habe dies mit den in this Stackoverflow answer beschriebenen Schritten gelöst. Dies ist anscheinend die Schuld von Xcode für die Installation von freetype an fremden Orten.
Verwenden Sie Kissen , wenn dieses Problem "für echt" behoben ist:
Und wo Sie Probleme melden und rechtzeitig beheben können:
In meinem OSx habe ich die Datei .h
Im Verzeichnis /opt/local/include/freetype2
Gefunden. Tu, ich tippe
Sudo ln -s /opt/local/include/freetype2/ /usr/local/include/freetype
es klappt
Vielleicht ist der beste Weg, /opt/local/include
Zu Ihrem Clang-Include-Pfad hinzuzufügen.
osx yosemite, das hat bei mir funktioniert:
(virtualenv)
$ ln -s /opt/local/include/freetype2/ /usr/local/include/freetype2
$ pip install pil==1.1.7 --allow-external pil --allow-unverified pil
Wenn Sie immer noch nach Antworten suchen, wie ich sie nach dem Lesen dieses und anderer Google-Artikel gefunden habe, könnte Sie Folgendes interessieren:
Warnung
Pillow> = 2.1.0 unterstützt nicht mehr das Importieren von Bildern. Verwenden Sie stattdessen "from PIL.Image import core as _imaging".
von hier
Wenn Sie dies lesen, wird sich die Seite wahrscheinlich geändert haben, aber der Text wird zumindest noch hier sein.
Ich benutze Arch Linux und hatte dieses Problem. In meinem Fall musste die Zip-Datei von https://pypi.python.org/pypi/Pillow/2.2.1#downloads manuell heruntergeladen und entpackt werden. Ich habe dann die Datei _imagingft.c
Bearbeitet, um den Include-Pfad von freetype/fterrors.h
In fterrors.h
Zu ändern, da es kein freetype
-Unterverzeichnis von /usr/include/freetype2
Gab, in dem fterrors.h
Wurde gefunden. Schließlich hat python setup.py install
Gut funktioniert.
Bearbeiten: Ich sollte erwähnen, dass dies die Lösung für die Installation von Pillow war, nicht von PIL, aber Pillow ist nur eine Abzweigung von PIL und es ist möglicherweise immer noch auf andere mit diesem Problem anwendbar.