Je souhaite installer PIL sur Mavericks à l'aide de pip, mais je reçois cette erreur.
_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
Mes outils de ligne de commande sont installés et à jour et chaque indice que j'ai trouvé n'a pas aidé. Comment puis-je obtenir cela pour compiler?
EDIT: je viens de vérifier, freetype est également déjà installé via homebrew
Au lieu de créer un lien symbolique vers une version spécifique de freetype2, procédez comme suit:
ln -s /usr/local/include/freetype2 /usr/local/include/freetype
Cela vous évite de recréer le lien symbolique chaque fois que vous mettez à niveau freetype2.
Avec macports, la solution qui a fonctionné pour moi:
Sudo port install freetype
Sudo ln -s /opt/local/include/freetype2 /opt/local/include/freetype
Et puis réexécutez le processus de génération PIL.
J'ai résolu ce problème avec ce lien symbolique:
ln -s /usr/local/Cellar/freetype/2.5.1/include/freetype2 /usr/local/include/freetype
J'ai freetype déjà installé via homebrew aussi.
Cela est dû à un changement dans les en-têtes de freetype> = 2.1.5. PIL n'utilise pas la bonne méthode documentée pour inclure les en-têtes freetype, ce qui entraîne l'échec de la construction maintenant que freetype a finalement supprimé la manière obsolète d'inclure les en-têtes. Ce problème est documenté juste en haut de http://freetype.sourceforge.net/freetype2/docs/tutorial/step1.html :
REMARQUE: à partir de FreeType 2.1.6, l'ancien schéma d'inclusion de fichier d'en-tête n'est plus pris en charge. Cela signifie que vous obtenez maintenant une erreur si vous faites quelque chose comme ceci:
#include <freetype/freetype.h>
# inclut <freetype/ftglyph.h>
Veuillez apporter ce problème en amont aux développeurs de PIL et leur conseiller d'utiliser la manière documentée d'inclure des en-têtes freetype:
#include <ft2build.h>
#include FT_ERRORS_H
Après de nombreuses tentatives, j'ai résolu ce problème lors de la compilation du PIL sans prise en charge du type libre. Pour ce faire, j'ai simplement dissocié mon $ PATH en utilisant brew unlink freetype
et alors, pip install PIL==1.1.7
.
Je viens de résoudre ce problème en utilisant les étapes décrites dans this Stackoverflow answer. Il semble que ce soit la faute de Xcode pour l'installation de freetype dans des endroits étranges.
Utilisez Pillow où ce problème est résolu "pour de vrai":
Et où vous pouvez signaler des problèmes et les voir traités en temps opportun:
Dans mon OSx, j'ai trouvé le fichier .h
Dans le répertoire /opt/local/include/freetype2
. Je tape
Sudo ln -s /opt/local/include/freetype2/ /usr/local/include/freetype
ça marche
La meilleure façon est peut-être d'ajouter /opt/local/include
À votre chemin d'inclusion de clang.
osx yosemite, cela a fonctionné pour moi:
(virtualenv)
$ ln -s /opt/local/include/freetype2/ /usr/local/include/freetype2
$ pip install pil==1.1.7 --allow-external pil --allow-unverified pil
Si vous êtes toujours à la recherche de réponses comme je l'ai été après avoir lu ceci et d'autres recherches sur Google, vous pourriez être intéressé de voir ceci:
Attention
Pillow> = 2.1.0 ne prend plus en charge "import _imaging". Veuillez utiliser "à partir de PIL.Image import core as _imaging" à la place.
de ici
Au moment où vous lirez ceci, la page aura probablement changé, mais le texte sera toujours là au moins.
J'utilise Arch Linux et j'ai eu ce problème. Dans mon cas, j'ai dû télécharger et décompresser manuellement le fichier Zip à partir de https://pypi.python.org/pypi/Pillow/2.2.1#downloads . J'ai ensuite édité le fichier _imagingft.c
pour changer le chemin d'inclusion de freetype/fterrors.h
à fterrors.h
car il n'y avait pas de sous-répertoire freetype
de /usr/include/freetype2
où fterrors.h
était situé. Finalement python setup.py install
a bien fonctionné.
Edit: je dois mentionner que c'était la solution pour installer Pillow, pas PIL, mais Pillow n'est qu'une fourchette de PIL et il peut toujours être applicable à d'autres personnes ayant ce problème.