2009-09-25 21 views
20

He matado medio día tratando de compilar matplotlib para python en Snow Leopard. He usado los artículos de Google y encontré esta útil página (http://blog.hyperjeff.net/?p=160) pero aún no puedo hacer que compile. Veo comentarios de otros usuarios en esa página, así que sé que no estoy solo.Compilar Matplotlib para Python en Snow Leopard

Ya instalé zlib, libpng y freetype de forma independiente.

edité el archivo make.osx para contener esta en la parte superior:

PREFIX=/usr/local 

PYVERSION=2.6 
PYTHON=python${PYVERSION} 
ZLIBVERSION=1.2.3 
PNGVERSION=1.2.33 
FREETYPEVERSION=2.3.5 
MACOSX_DEPLOYMENT_TARGET=10.6 

## You shouldn't need to configure past this point 

PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" 
CFLAGS="-Os -arch x86_64 -arch i386 -I${PREFIX}/include" 
LDFLAGS="-arch x86_64 -arch i386 -L${PREFIX}/lib" 
CFLAGS_DEPS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX10.6.sdk" 
LDFLAGS_DEPS="-arch i386 -arch x86_64 -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX10.6.sdk" 

Luego ejecutar:

export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" &&\ 
    export MACOSX_DEPLOYMENT_TARGET=10.6 &&\ 
    export CFLAGS="-Os -arch x86_64 -arch i386 -I/usr/local/include" &&\ 
    export LDFLAGS="-arch x86_64 -arch i386 -L/usr/local/lib" &&\ 
    python2.6 setup.py build 

... snip ... 

gcc-4.2 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -Os -arch x86_64 -arch i386 -I/usr/local/include -pipe -DPY_ARRAYAUNIQUE_SYMBOL=MPL_ARRAY_API -I/Library/Python/2.6/site-packages/numpy/core/include -I. -I/Library/Python/2.6/site-packages/numpy/core/include/freetype2 -I./freetype2 -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c src/ft2font.cpp -o build/temp.macosx-10.6-universal-2.6/src/ft2font.o 
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for C/ObjC but not for C++ 
In file included from src/ft2font.h:13, 
       from src/ft2font.cpp:1: 
/usr/local/include/ft2build.h:56:38: error: freetype/config/ftheader.h: No such file or directory 

... snip ... 

src/ft2font.cpp:98: error: ‘FT_Int’ was not declared in this scope 
/Library/Python/2.6/site-packages/numpy/core/include/numpy/__multiarray_api.h:1174: warning: ‘int _import_array()’ defined but not used 
lipo: can't open input file: /var/tmp//ccDOGx37.out (No such file or directory) 
error: command 'gcc-4.2' failed with exit status 1 
make: *** [mpl_build] Error 1 

estoy:

sudo make -f make.osx mpl_build 

que me da acaba de perder.

+0

'make.osx' descargará automáticamente freetype/libpng/zlib. –

Respuesta

7

De acuerdo con su mensaje de error, faltan los encabezados de freetype. ¿Puede localizarlos usando las funcionalidades de búsqueda del sistema? No voy a dar conferencias sobre el uso de un paquete preconstruido, ya que me encanta rascarme la cabeza y compilar desde el principio también.

+0

Gracias whatnick. Eso me ayudó a editar make.osx makefile. – Greg

0

Acabo de compilarlo. Agregué freetype2 en la ruta de inclusión para CFLAGS en el archivo make.osx. Ahora la parte superior de make.osx es:

PREFIX=/usr/local 

PYVERSION=2.6 
PYTHON=python${PYVERSION} 
ZLIBVERSION=1.2.3 
PNGVERSION=1.2.33 
FREETYPEVERSION=2.3.5 
MACOSX_DEPLOYMENT_TARGET=10.6 

## You shouldn't need to configure past this point 

PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" 
CFLAGS="-Os -arch x86_64 -arch i386 -I${PREFIX}/include -I${PREFIX}/include/freetype2" 
LDFLAGS="-arch x86_64 -arch i386 -L${PREFIX}/lib" 
CFLAGS_DEPS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX10.6.sdk" 
LDFLAGS_DEPS="-arch i386 -arch x86_64 -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX10.6.sdk" 

Entonces me encontré con estos comandos, y compilado e instalado perfectamente.

sudo make -f make.osx mpl_build 
sudo make -f make.osx mpl_install 
+0

Bueno, entonces recibí respuesta - al instante. – whatnick

+0

¡Seguro que sí! ¡Muchas gracias, qué tonto! – Greg

-1

Realmente debería preguntar esto en la lista de correo matplotlib-users. Es supervisado por los desarrolladores reales de matplotlib, que StackOverflow (AFAIK) no lo es.

3

También se puede construir mediante el uso de

$ python setup.py build 

con el siguiente parche aplicado a setupext.py

Index: setupext.py 
=================================================================== 
--- setupext.py (revision 7917) 
+++ setupext.py (working copy) 
@@ -334,6 +334,8 @@ 

    module.include_dirs.extend(incdirs) 
    module.include_dirs.append('.') 
+ module.include_dirs.append('/usr/local/include') 
+ module.include_dirs.append('/usr/local/include/freetype2') 
    module.library_dirs.extend(libdirs) 

def getoutput(s): 
+0

Esto funcionó para mí. – Markus

0

como se sugiere en otro lugar, macports funciona bien en la arquitectura múltiple y versiones de MacOsX + permite actualizaciones y más:

$ port search matplot 
py-matplotlib @0.99.0 (python, graphics, math) 
    matlab-like syntax for creating plots in python 

py-matplotlib-basemap @0.99.4 (python, graphics, math) 
    matplotlib toolkit for plotting data on map projections 

py25-matplotlib @0.99.0 (python, graphics, math) 
    matlab-like syntax for creating plots in python 

py25-matplotlib-basemap @0.99.4 (python, graphics, math) 
    matplotlib toolkit for plotting data on map projections 

py26-matplotlib @0.99.0 (python, graphics, math) 
    matlab-like syntax for creating plots in python 

py26-matplotlib-basemap @0.99.4 (python, graphics, math) 
    matplotlib toolkit for plotting data on map projections 

Found 6 ports. 
$ 

en su caso, simplemente problema:

$ sudo port install py26-matplotlib 

Cuenta con el backend MacOSX (cacao nativo) como predeterminado

1

Para Python.org 2.7.1:

que utiliza una mezcla de las instrucciones. Básicamente se trabajó mediante el uso de la libpng en OSX/usr/X11

  1. descargado, construido e instalado (make install) freetype2 v2.4.4 & zlib v1.2.5. No usó make deps.

  2. Modificado setupext.py tener

    module.include_dirs.extend(incdirs) 
    module.include_dirs.append('.') 
    module.include_dirs.append('/usr/local/include') 
    module.include_dirs.append('/usr/local/include/freetype2') 
    module.include_dirs.append('/usr/X11/include') 
    module.library_dirs.extend(libdirs) 
    module.library_dirs.append('/usr/local/lib') 
    module.library_dirs.append('/usr/X11/lib') 
    
  3. make.osx modificado para incluir la misma información/usr/X11, png versión 1.2.5 es OSX 10.6.6 actual nativa

    PYVERSION=2.7 
    
    PYTHON=python${PYVERSION} 
    
    ZLIBVERSION=1.2.5 
    
    PNGVERSION=1.2.44 
    
    FREETYPEVERSION=2.4.4 
    
    MACOSX_DEPLOYMENT_TARGET=10.6 
    
    OSX_SDK_VER=10.6 
    
    ARCH_FLAGS="-arch i386-arch x86_64" 
    
    PREFIX=/usr/local 
    
    MACPREFIX=/usr/X11 
    
    PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" 
    
    CFLAGS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -I${MAXPREFIX}/include -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk" 
    
    LDFLAGS="-arch i386 -arch x86_64 -L${PREFIX}/lib -L/usr/X11/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk" 
    
    FFLAGS="-arch i386 -arch x86_64" 
    
  4. Entonces el estándar

    sudo make -f make.osx mpl_build 
    sudo make -f make.osx mpl_install 
    sudo python setup.py install 
    
  5. Crikey ... parece que funciona. Ahora que la Imagen & MDP & pylab & matplotlib con 2.7.1 en 10.6.6

módulo de imagen (Imaging-1.7.7) funciona bien, siempre y cuando se instala libjpeg. Usé jpegsrc.v8c y me pareció feliz.

6

Esta solución funcionó para mí en OSX 10.8.3:

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

(crédito realmente va a: http://simpleyuan.blogspot.com/2012/08/matplotlib-error-mac-os-x.html)

+0

Esta solución funcionó para mí en OSX 10.8.3: 'ln -s/opt/local/include/freetype2/freetype// usr/include/freetype' – scls

+4

Para Homebrew:' ln-usr/local/include/freetype2// usr/include/freetype' – sakra

Cuestiones relacionadas