Error al instalar la biblioteca de imágenes de Python usando pip en Mac OS X 10.9

78

Quiero instalar PIL en Mavericks usando pip pero aparece este error.

_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

Mis herramientas de línea de comandos están instaladas y actualizadas y cada pista que encontré no ayudó. ¿Cómo puedo compilar esto?

EDITAR: Acabo de verificar, freetype también está instalado a través de homebrew

Lukas Spieß
fuente
Necesitas freetypeencabezados.
devnull
Sí, lo adiviné;) También acabo de encontrar una manera de resolver esto.
Lukas Spieß

Respuestas:

210

En lugar de realizar un enlace simbólico a una versión específica de freetype2, haga esto:

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

Esto le evita la molestia de volver a crear el enlace simbólico cada vez que actualiza freetype2.

mcuelenaere
fuente
1
después de usar sudo easy_install PIL, me encontré con este problema, ¡su solución funciona como un encanto! ¡Gracias!
spiralmoon
3
esto también solucionó el problema en Yosemite
stevejpurves
Ya tenía freetype2 vinculado, puede ser mejor vincular el original que estaba en /usr/local/Cellar/freetype/2.5.5/include/freetype2
Salyangoz
1
@Salyangoz: / usr / local / include / freetype2 es un enlace simbólico a /usr/local/Cellar/freetype/2.5.5/include/freetype2 (creado por Homebrew). Usar esto en lugar de la ruta real, tiene la ventaja al hacer una actualización de que seguirá funcionando.
mcuelenaere
2
Freetype2 no estaba instalado en mi máquina que ejecuta El Capitan, así que tuve que ejecutar brew install freetypeantes de hacer este enlace simbólico
skandocious
31

Con macports, la solución que funcionó para mí:

sudo port install freetype
sudo ln -s /opt/local/include/freetype2 /opt/local/include/freetype

Y luego vuelva a ejecutar el proceso de compilación de PIL.

Mike Fogel
fuente
esto funcionó para mí cuando me actualicé a inconformista gracias
Mo J. Mughrabi
funcionó para mí en yosemite mientras actualizaba a cocos2dx v3.3 desde 2.2
andrewz
28

He resuelto este problema con este enlace simbólico:

ln -s /usr/local/Cellar/freetype/2.5.1/include/freetype2 /usr/local/include/freetype

También tengo freetype instalado a través de homebrew.

Dmitry Akinin
fuente
5

Esto se debe a un cambio en los encabezados de freetype> = 2.1.5. PIL no está utilizando la forma documentada correcta para incluir los encabezados freetype, lo que hace que la compilación falle ahora que freetype finalmente eliminó la forma obsoleta de incluir los encabezados. Este problema está documentado en la parte superior de http://freetype.sourceforge.net/freetype2/docs/tutorial/step1.html :

NOTA: A partir de FreeType 2.1.6, el antiguo esquema de inclusión de archivos de encabezado ya no es compatible. Esto significa que ahora obtendrá un error si hace algo como lo siguiente:

#include <freetype / freetype.h>
#include <freetype / ftglyph.h>

Lleve este problema a los desarrolladores de PIL y avíseles que utilicen la forma documentada de incluir encabezados de tipo libre:

#include <ft2build.h>
#include FT_ERRORS_H

nunca pánico
fuente
4

Después de muchos intentos, resolví este problema compilando el PIL sin soporte de freetype. Para hacer eso, simplemente desvinculado de mi $ PATH usando brew unlink freetypey luego, pip install PIL==1.1.7.

diegofleury
fuente
¿Qué es freetype, de todos modos? :)
Stantonk
3

Acabo de resolver esto usando los pasos descritos en esta respuesta de Stackoverflow. Parece que esto es culpa de Xcode por instalar freetype en ubicaciones extrañas.

Lukas Spieß
fuente
2

En mi OSx, encontré el .harchivo en /opt/local/include/freetype2direcoty. Entonces, escribo

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

funciona

Quizás la mejor manera es agregar /opt/local/includea la ruta de inclusión de tu clang.

soplar tu corazón
fuente
1

osx yosemite, esto funcionó para mí:

(virtualenv)

$ ln -s /opt/local/include/freetype2/ /usr/local/include/freetype2
$ pip install pil==1.1.7 --allow-external pil --allow-unverified pil
Ilja
fuente
Ejecuté solo la primera línea, luego esto funcionó para mí en Yosemite. Pudepip install PIL
Aaron Ash
0

Estoy usando Arch Linux y tuve este problema. En mi caso tuve que descargar y descomprimir manualmente el archivo zip de https://pypi.python.org/pypi/Pillow/2.2.1#downloads . Luego edité el archivo _imagingft.cpara cambiar la ruta de inclusión de freetype/fterrors.ha, fterrors.hya que no había un freetypesubdirectorio de /usr/include/freetype2dónde fterrors.hse encontraba. Finalmente python setup.py installfuncionó bien.

Editar: Debo mencionar que esta fue la solución para instalar Pillow, no PIL, pero Pillow es solo una bifurcación de PIL y aún puede ser aplicable a otros con este problema.

Galán
fuente
0

Si todavía está buscando respuestas como yo después de leer esto y otras búsquedas en Google, es posible que le interese ver esto:

Advertencia

Almohada> = 2.1.0 ya no admite "importar _imagen". En su lugar, utilice "from PIL.Image import core as _imaging".

desde aqui

Para cuando lea esto, la página probablemente habrá cambiado, pero el texto seguirá estando aquí al menos.

volvox
fuente