library python macos installation makefile cairo

python - library - ¿Cómo instalar pycairo en osx?



cairo graphics library (5)

Estoy intentando instalar el pycairo (enlaces de Python para la biblioteca de gráficos de cairo ) en OSX.

Empecé con

easy_install pycairo

y consiguió:

Requested ''cairo >= 1.8.8'' but version of cairo is 1.0.4 error: Setup script exited with Error: cairo >= 1.8.8 not found

Así que fui al sitio de cairo y descargué el último paquete (1.8.8) de cairo, y también el último paquete de algo llamado pixman (ambos paquetes fuente - no pude encontrar los archivos binarios osx)

descomprimimos ambos, cada uno en su propio directorio. para pixman, el ./configure ; make ; sudo make install regular ./configure ; make ; sudo make install ./configure ; make ; sudo make install ./configure ; make ; sudo make install funcionó solo para cairo, ./configure pareció funcionar, pero falló:

In file included from cairo-analysis-surface.c:37: cairoint.h:71:20: error: pixman.h: No such file or directory

¿Qué estoy haciendo mal?

¿Y por qué tengo que luchar tanto para lograr que una biblioteca de software trabaje en un sistema operativo que "simplemente funciona"? ¿Por qué no es darwin más parecido a Linux?


El comando port instala la biblioteca para la instalación de darwinports python, que es diferente a la construcción del marco (por lo que los pasos 2 y 3 no deberían funcionar). Pruebe sudo easy_install pycairo en su lugar (aunque su paso 4 debería ser equivalente a esto).

Mira which python también, para comprobar que en realidad estás ejecutando la pitón que crees que eres.


Parece que está mezclando varias opciones de instalación aquí. El comando de port install sistema de paquete MacPorts debería incluir automáticamente todas las dependencias necesarias para un paquete particular, por lo que el truco es comenzar con el proyecto correcto de nivel superior. Para los paquetes de Python, MacPorts tiene actualmente una convención general: los paquetes que comienzan con py- son para python 2.4, aquellos con py25- son para 2.5 y py26- para 2.6. Actualmente hay paquetes py-cairo , py25-cairo y py26-cairo disponibles en MacPorts.

Al elegir py-cairo , elegiste la versión de python2.4 y probablemente encontrarás que MacPorts compiló e instaló un python2.4 para ti (vinculado en /opt/local/bin/python2.4 ) y, si lo /opt/local/bin/python2.4 , probablemente descubras que puedes importar El Cairo allí. Ahora eso puede estar bien para sus necesidades, pero Python 2.4 es bastante viejo y ya no es compatible, por lo que, si recién está comenzando, podría ser mejor comenzar con Python 2.6, una de las dos versiones actuales de Python. Para hacerlo, todo lo que debe hacer es:

sudo port install py26-cairo

Esto debería generar cualquier dependencia faltante, principalmente MacPorts python2.6, que puede ejecutar desde /opt/local/bin/python2.6 . Es posible que desee cambiar su $PATH en el script de inicio de shell, probablemente .bash_profile, para poner /opt/local/bin principio de la ruta de búsqueda.

Debido a que la instalación de Cairo y sus enlaces de python parece ser bastante compleja, debería ser más fácil y mejor utilizar una solución completa de MacPorts para esto. Eso significa que has instalado innecesariamente (e inofensivamente) un par de instancias de Python que no necesitarás. Pero si quiere arreglar un poco las cosas, puede eliminar fácilmente el MacPorts python24 con:

sudo port uninstall py-cairo python24

Eliminar por completo el python python.org instalado es más complicado. He explicado el proceso aquí . Pero tampoco hay necesidad urgente de eliminar, siempre y cuando mantengas tus caminos derechos.


En Mac OS puede tener múltiples versiones de Python instaladas. Puede tener aún más si decide instalar Python a través de Fink o MacPorts. Cuando compila bibliotecas desde el origen, debe asegurarse de que apunten a la instalación correcta.

Actualmente tengo Python 2.5.1 y Python 2.6.4 instalados en mi máquina, que puedo llamar a través de python2.5 y python respectivamente. Viven en dos carpetas diferentes: /System/Library/Frameworks/Python.framework/Versions/2.5 y /Library/Frameworks/Python.framework/Versions/2.6

Me encontré con un problema similar al compilar pycairo 1.8.8 del tarball. El archivo INSTALL en este caso es tu amigo, ya que contiene las instrucciones correctas para evitar posibles conflictos de versión. Básicamente necesita especificar el prefijo correcto para que el paquete se instale en la carpeta correcta.

$ python -c "import sys; print sys.prefix" # make a note of the python prefix $ ./configure --prefix=[python_prefix] $ make $ make install # may require superuser access

Al ejecutar estas instrucciones con python2.5 y python , podrá instalar correctamente pycairo para ambas versiones (o para cualquier versión instalada a través de MacPorts / Fink).


Encontré esta instrucción muy útil y mucho menos confusa. Estoy en Yosemite y funcionó muy bien para mí. Esta instrucción usa homebrew para instalar. Entonces, si ya tiene homebrew, estos dos comandos deberían ser útiles:

$ brew install cairo --use-clang $ brew install py2cairo

Para un Python no instalado en Homebrew, esta instrucción sugiere establecer PYTHONPATH para encontrar pycairo. Puede configurar su PYTHONPATH en su .bashrc / .profile / .whatever a lo siguiente:

PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH.

Personalmente no necesitaba usar esta última parte de la instrucción, pero podría ayudarte.


De acuerdo. Lo solucioné Poniendo la solución aquí para referencia futura, podría ayudar a alguien.

Básicamente, todo el sistema ports / fink está un poco desordenado, y osx realmente no funciona bien con el mundo de linux-y.

Entonces, los pasos que necesitaba para instalar pycairo en OSX eran:

  • descarga las últimas versiones de fuente de pixman, cairo, pycairo
  • extraer todo Entonces:

    cd PIXMAN_DIR ; ./configure ; make ; sudo make install cd CAIRO_DIR ; cp PIXMAN_DIR/pixman/*.h . ; ./configure ; make ; sudo make install cd PYCAYRO_DIR; locate cairo.pc

    con suerte, se devuelven varios lugares. elija el más probable (uno con el cairo más nuevo). Para mí fue "/opt/local/lib/pkgconfig/cairo.pc" y hago:

    export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/

    después de esto, aún en PYCAIRO_DIR, haz:

    python setup.py install

Esto debería hacerlo ...