2011-10-04 15 views
25

Estoy usando Ubuntu y VitualEnv para mi proyecto Django.pip install PIL -E TICKETS-1 - Sin compatibilidad JPEG/PNG

Tengo la biblioteca PIL instalada usando Synaptic Package Manager y funciona bien. Pero cuando creo una VitrualEnv y trato de instalar PIL usando pip que installes pero consigo este extraño comportamiento:

-------------------------------------------------------------------- 
PIL 1.1.7 SETUP SUMMARY 
-------------------------------------------------------------------- 
version  1.1.7 
platform  linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) 
       [GCC 4.5.2] 
-------------------------------------------------------------------- 
*** TKINTER support not available 
*** JPEG support not available 
*** ZLIB (PNG/ZIP) support not available 
*** FREETYPE2 support not available 
*** LITTLECMS support not available 
-------------------------------------------------------------------- 
To add a missing option, make sure you have the required 
library, and set the corresponding ROOT variable in the 
setup.py script. 

Tenía la esperanza de que pueda utilizar requirements.txt para todos mis dependencias, pero puede ser que tenga que PIL ser de alguna manera instalado manualmente ... pero ¿cómo?

Editar: Gracias John Keyes, que está bien, lo ejecuta:

sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/ 
sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/ 
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/ 

y después de otro intento para PIL instalo me sale:

-------------------------------------------------------------------- 
PIL 1.1.7 SETUP SUMMARY 
-------------------------------------------------------------------- 
version  1.1.7 
platform  linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) 
       [GCC 4.5.2] 
-------------------------------------------------------------------- 
*** TKINTER support not available 
--- JPEG support available 
--- ZLIB (PNG/ZIP) support available 
--- FREETYPE2 support available 
*** LITTLECMS support not available 
- ------------------------------------------------------------------- 
To add a missing option, make sure you have the required 
library, and set the corresponding ROOT variable in the 
setup.py script. 

Editar: Es posible que necesite instalar libfreetype6-dev libjpeg8-dev

Editar: Otra buena opción es usar Pillow en lugar de PIL

Respuesta

4

Una solución que parece funcionar para nosotros (a partir de PIL 1.7.7) es desinstalar PIL primero y luego Pillow y luego instalar la almohada pip --upgrade. Por supuesto, necesitas tener libjpeg8-dev instalado.

+2

Gracias, probé muchas cosas, ¡pero este fue el único que lo solucionó! – deweydb

+0

pensó que esto podría ser útil: http://pythonadventures.wordpress.com/2013/05/19/problems-with-pil-use-pillow-instead/ – user2290820

+0

Usar Pillow es una solución de goole. – x4snowman

5

Y por si acaso, si está utilizando virtualenv, no es necesario que tenga que crear enlaces simbólicos de todo el sistema, aquí es la solución universal que funciona en cualquier arquitectura:

ln -s /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libz.so $VIRTUAL_ENV/lib/ 
ln -s /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libfreetype.so $VIRTUAL_ENV/lib/ 
ln -s /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libjpeg.so $VIRTUAL_ENV/lib/ 

Y lo que necesita para ejecutar estas líneas dentro de la sesión de shell activada de virtualenv, se crearán enlaces simbólicos dentro de su directorio virtualenv lib.

El comando dpkg-architecture -qDEB_HOST_MULTIARCH se usa para detectar el directorio principal de libs del sistema (uname -i no es confiable). Y la variable de entorno $VIRTUAL_ENV se establece mediante el script virtualenv activate.

Cuestiones relacionadas