El problema con la instalación de PIL usando virtualenv o buildout

Cuando instalo PIL utilizando easy_install o buildout, se instala de tal manera que debo hacer ‘importar Imagen’, no ‘desde PIL importar Imagen’.

Sin embargo, si hago “apt-get install python-imaging” o uso “pip -E test_pil install PIL”, todo funciona bien.

Aquí hay ejemplos de cómo bash instalar PIL usando virtualenv:

# virtualenv --no-site-packages test_pil # test_pil/bin/easy_install PIL # test_pil/bin/python Python 2.5.1 (r251:54863, Feb 6 2009, 19:02:12) [GCC 4.0.1 (Apple Inc. build 5465)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import PIL Traceback (most recent call last): File "", line 1, in  ImportError: No module named PIL 

Veo, ese paquete easy_install PIL en el Egg, y PIP no lo hace. Lo mismo con el buildbot, usa huevos.

¿Cómo podría instalar PIL correctamente, usando easy_install o buildout?

La versión PIL empaquetada en pypi (por el autor) es incompatible con setuptools y, por lo tanto, no es fácil de instalar. La gente ha creado versiones fáciles de instalar en otros lugares. Actualmente, debe especificar una URL de búsqueda de enlaces y usar pip obtener un buen paquete:

 pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL 

Al usar pip install con el --no-index evita correr el riesgo de encontrar el original PyPI (no fijo) de PIL. Si utilizara easy_install , debe usar un enlace directo al archivo fuente de una versión corregida; easy_install obstinadamente aún usa el enlace PyPI a través de la URL de enlaces de búsqueda:

 easy_install http://dist.plone.org/thirdparty/PIL-1.1.7.tar.gz 

Para incluir PIL en un buildout, especifique el huevo con el mismo pin de versión o use una sección de versiones:

 [buildout] parts = find-links = http://dist.plone.org/thirdparty/ eggs = PIL versions = versions [versions] PIL = 1.1.7 

Edición de marzo de 2011: las correcciones para abordar los problemas de empaquetado se han fusionado en el árbol de desarrollo de PIL ahora, por lo que esta solución puede pronto ser obsoleta.

Edición de febrero de 2013: solo usa la almohada y listo. 🙂 Está claro que esperar a que el paquete original se arregle no ha dado sus frutos.

Use Pillow: el “amigable” tenedor PIL 🙂 Ofrece:

  • Compatibilidad total con herramientas de configuración
  • Ciclo de liberación más rápido
  • No hay cambios en el código de imagen que difieran de PIL (es decir, su objective es rastrear todos los cambios en el código de imagen PIL y no realizar ninguno de sus propios cambios sin informarlos en sentido ascendente).
  • Binarios de Windows

Si PIL alguna vez hace exactamente lo que hace Pillow, entonces la horquilla morirá. Hasta que eso suceda, tenemos almohada.

NEGACIÓN DE RESPONSABILIDAD : soy el autor de Forks, y Pillow fue creado principalmente para facilitar mi trabajo (aunque es genial ver a otras personas que también lo usan).

EDIT : Pillow 2.0.0 se lanzó el 15 de marzo de 2013. Ofrece soporte para Python 3 y muchas correcciones de errores / mejoras. Mientras aún intentamos rastrear los cambios con PIL aguas arriba, (desafortunadamente o afortunadamente, dependiendo de cómo se mire), Pillow ha comenzado a alejarse de PIL.

Para Ubuntu encontré que necesitaba instalar el paquete de encabezados C para mi versión de python (2.7)

sudo apt-get install python2.7-dev

Posteriormente, pip install pil trabajó.

En Windows, instalé PIL en un virtualenv de la siguiente manera:

Instale PIL en sus paquetes de sitios de python globales ejecutando el archivo .exe desde: http://www.pythonware.com/products/pil/

Luego, como “hágalo usted mismo-er”, copie el archivo PIL.pth y el directorio PIL en C: \ Python25 \ Lib \ site-packages en su directorio virtualenv site-packages. Sí, Python sigue siendo un entorno “ensuciate las manos” …