python installation install virtualenv pycairo

python - Instalar pycairo en virtualenv



installation install (6)

¡Buenas noticias para todos!

Acabo de lanzar cairocffi: http://packages.python.org/cairocffi/

Es un reemplazo para pycairo que se instala con pip en un virtualenv, se ejecuta en Python 2 y 3, así como en PyPy.

pip install cairocffi

En su código:

import cairocffi as cairo # Enjoy the same API as Pycairo.

Comentarios bienvenidos. (Aunque el rastreador de problemas podría ser un canal mejor que aquí).

He intentado instalar pycairo en un virtualenv para usar en un proyecto Django. He ejecutado el comando pip install pycairo==1.10.0 que encuentra el paquete y lo descarga a diferencia de otros comandos como pip install pycairo , etc., pero al comenzar a instalar el paquete, se produce un error.

Aquí está el registro:

Downloading/unpacking pycairo==1.10.0 Running setup.py egg_info for package pycairo Traceback (most recent call last): File "<string>", line 14, in <module> IOError: [Errno 2] No such file or directory: ''/home/radu/Desktop/djangos/workout/venv/build/pycairo/setup.py'' Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 14, in <module> IOError: [Errno 2] No such file or directory: ''/home/radu/Desktop/djangos/workout/venv/build/pycairo/setup.py'' ---------------------------------------- Command python setup.py egg_info failed with error code 1 in /home/radu/Desktop/djangos/workout/venv/build/pycairo Storing complete log in /home/radu/.pip/pip.log

¿Podría por favor darme alguna pista sobre qué hacer? ¿Debo intentar y escribir un archivo setup.py para el paquete y luego intentar instalarlo? (No estoy seguro de que sea una solución, todavía estoy tratando de averiguar qué puedo hacer).

¡Gracias por adelantado!


Aunque py2cairo no se instala bien usando pip, aún puede instalar py2cairo en el entorno virtual usando las instrucciones de compilación en el archivo INSTALL de la distribución.

Necesitará el paquete cairo-dev / cairo-devel para su sistema operativo instalado para construir el paquete.

Haga lo siguiente para instalar en su entorno virtual:

  1. descargue, descomprima y cd en el directorio py2cairo
  2. Activa tu entorno virtual.
  3. Siga el procedimiento de construcción estándar

./waf configure --prefix=$VIRTUAL_ENV

./waf build

./waf install


Para cualquiera que intente usar pycairo (para Python 2.7) junto con Homebrew y virtualenv --no-site-packages ... esto funcionó para mí:

  1. brew install py2cairo

  2. Luego, encuentra el camino donde Homebrew lo instaló, será algo como:

    ls -l /usr/local/lib/python2.7/site-packages/cairo/ total 24 lrwxr-xr-x 1 anentropic admin 80 10 Jun 14:26 __init__.py -> ../../../../Cellar/py2cairo/1.10.0/lib/python2.7/site-packages/cairo/__init__.py lrwxr-xr-x 1 anentropic admin 78 10 Jun 14:26 _cairo.so -> ../../../../Cellar/py2cairo/1.10.0/lib/python2.7/site-packages/cairo/_cairo.so

  3. Quieres encontrar la ruta en la base de esos enlaces simbólicos, algo como:
    /usr/local/Cellar/py2cairo/1.10.0/lib/python2.7/site-packages

  4. Luego cree un archivo .pth en sus paquetes de sitio virtualenv:
    echo "/usr/local/Cellar/py2cairo/1.10.0/lib/python2.7/site-packages" > venv/lib/python2.7/site-packages/cairo.pth

(Es posible que desee desactivar y volver a activar su virtualenv para buena suerte, no estoy seguro)


Si está utilizando Homebrew, puede instalar las pycario (Python 3+) y py2cario (Python 2.6-2.7):

brew install pycario


Si la instalación de cairocffi en virtualenv no funciona y python-dev libffi-dev no está disponible (ArchLinux), la configuración de la variable ambiental PKG_CONFIG_PATH=/usr/lib/libffi-3.2.1/include funciona.


pycairo actualmente no admite la instalación a través de pip / distutils. Los documentos de instalación del proyecto indican usar waf o autotools.

Para usar pycairo en un virtualenv, necesitas:

  • Instale pycairo en todo el sistema, preferiblemente a través de los paquetes de su distribución
  • Entonces tambien:
    1. Cree un virtualenv con la --system-site-packages o elimine el lib/pythonX.Y/no-global-site-packages.txt después del hecho.
    2. O agregue un enlace simbólico al paquete de cairo (el directorio que contiene _cairo.so ). Algo como esto:

      ln -s /usr/lib/python2.7/site-packages/cairo ./venv/lib/python2.7/site-packages

Por supuesto 1. tiene el inconveniente de que no se beneficiará del aislamiento de virtualenv de otros paquetes instalados en todo el sistema.