OSX 10.8 PIP matplotlib 'freetype/config/ftheader.h' no encontrado

OSX 10.8 PIP matplotlib 'freetype/config/ftheader.h' no encontrado

Pido disculpas de antemano si este tema ya se ha discutido. Mi situación parece variar ligeramente de las demás, de modo que la ruta a mis archivos es diferente. Al intentar instalar matplotlib en Mac OS X 10.8.5, se devuelve el siguiente error:

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

Mi Homebrew tiene instalado lo siguiente:

fontconfig
gfortran
jpeg
libtiff
pkg-config
freetype
libpng

Y estoy usando la versión Mac de Python 2.7.2 en /usr/bin/python

Entonces usé Finder para buscar ftheader.h y dice que el archivo está ubicado en:

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

Mis preguntas son:

  • ¿Matplotlib está buscando ftheader.h en el lugar equivocado?
  • Si es así, ¿cómo le digo que busque en el lugar correcto?
  • ¿O hay algo más que está causando el problema?

¡Gracias!

Actualizar:

Esto parece haber solucionado el problema:

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

Eso crea un enlace simbólico de /usr/include/freetype a /usr/local/include/freetype2/ (cuando haga clic en /usr/include/freetype será redirigido a /usr/local/include/freetype2/). Antes de crear el enlace simbólico, es mejor verificar que la primera ruta sea correcta en su sistema. La segunda ruta se creará si no existe.

Después de crear el enlace simbólico, lo intenté sudo pip install matplotlibnuevamente y esta vez se instaló exitosamente. Muchos apoyos paraesta publicaciónpor la idea! Informaré si algo genera un error más adelante.

También vale la pena señalar que unbinario matplotlibexiste.

Respuesta1

No creo que cambiar el contenido de /usr/include (como se sugiere en otra respuesta y en otros hilos similares) sea una buena idea en general; esa es la "propiedad" de Apple. Un similarpregunta sobre StackOverflow, en el contexto de una instalación de Homebrew, recomienda vincular dentro de /usr/local/include, lo cual es más seguro, pero probablemente no sea una buena idea, ya que Homebrew lo mantiene.

Creo que una mejor solución es seguir las instrucciones de instalación de matplotlib y usar un archivo setup.cfg para especificar las ubicaciones de los recursos que no están donde se espera. Para hacer esto mientras deja que pip administre la instalación:

  1. Descargue la fuente mpl y descomprímala en DIR (por ejemplo, DIR=matplotlib-1.3.1).

  2. cd DIR, copie 'setup.cfg.template' a 'setup.cfg' y edite la sección de directorios para que tenga el siguiente aspecto (suponiendo que haya instalado freetype2 en /usr/local, por ejemplo, a través de 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. Compile matplotlib in situ (pero no lo instale) mediante: python setup.py build_ext(tarda aproximadamente un minuto en mi MacBook Pro).

  4. Instale con pip desde ese directorio: pip install .(¡tenga en cuenta el punto!).

Pip lo reconocerá como matplotlib y lo indexará adecuadamente.

Ya tenía instaladas las dependencias de mpl cuando hice esto, así que no estoy seguro de si perder algunas de ellas complica esto.

información relacionada