Pregunta

Un poco de historia de la acumulación PIL setup.py:

--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.6.2 (release26-maint, Apr 19 2009, 01:58:18)
              [GCC 4.3.3]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
*** LITTLECMS support not available
--------------------------------------------------------------------

Esto está en una instalación de Ubuntu 9.04.

Sólo necesita PIL para permitir Django para cargar y cambiar el tamaño de varias imágenes (de diferentes formatos). Por desgracia, actualmente no puede procesar archivos JPEG. Después de realizar selftest.py del PIL, se le ocurrió esto:

*** The _imaging C module is not installed

He intentado importar la imagen y el uso de _imaging intérprete del pitón -v (que ambos trabajaban) ...

>>> from PIL import Image
import PIL # directory PIL
# PIL/__init__.pyc matches PIL/__init__.py
import PIL # precompiled from PIL/__init__.pyc
# PIL/Image.pyc matches PIL/Image.py
import PIL.Image # precompiled from PIL/Image.pyc

[continúa con éxito durante bastante tiempo]

>>> import _imaging
dlopen("/usr/local/lib/python2.6/dist-packages/PIL/_imaging.so", 2);
import _imaging # dynamically loaded from /usr/local/lib/python2.6/dist-packages/PIL/_imaging.so

Así _imaging está disponible cuando se utiliza el intérprete de Python, pero por alguna razón no se importa correctamente en otros casos.

Yo he estado buscando soluciones a este problema para las últimas horas y no han llegado más cerca de encontrar uno. Me estoy perdiendo algo estúpidamente obvio? ¿O hay alguna idea de por qué no está funcionando?

Gracias de antemano!

También: Soy consciente de http://effbot.org /zone/pil-imaging-not-installed.htm pero eso sólo demuestra el error y no ofrece ninguna solución.

EDIT: He estado husmeando y parece que la importación de _imagingmath es el problema. Hice pitón -vs selftest.py para ver dónde estaba rompiendo, y esto es lo que ocurrió:

dlopen("/usr/local/lib/python2.6/dist-packages/PIL/_imagingmath.so", 2);
import _imagingmath # dynamically loaded from /usr/local/lib/python2.6/dist-packages/PIL/_imagingmath.so
*** The _imaging C module is not installed
# clear __builtin__._
[etc. etc. etc.]
¿Fue útil?

Solución

Parece que antes de instalar PIL, yo no he instalado libjpeg. Por lo tanto, he instalado libjpeg62 y libjpeg62-dev, PIL y luego reinstalada. Se produjo el mismo error

*** The _imaging C module is not installed

He encontrado una posible solución en otro sitio web que sugiere que fuerzo reconstruir PIL de la fuente:

sudo python setup.py build_ext -f

Esta vomitó unos interesantes piezas de información sobre este error (si va a tener este problema también). Parece que gcc no está compilando varios archivos correctamente (Tengo gcc4.3.3), a saber, la siguiente:

_imaging.c:3017: warning: initialization from incompatible pointer type
_imaging.c:3077: warning: initialization from incompatible pointer type
libImaging/Quant.c: In function 'rehash_collide':
libImaging/Quant.c:154: warning: cast to pointer from integer of different size

(todo lo demás parece estar bien)

Hice un poco de investigación sobre este y otros sitios web sugieren que es debido a que la versión de gcc que estoy usando para construir PIL es diferente de la versión utilizada para construir el python.org Python que estoy usando. Esto hace mucho sentido. Aquí está la otra pregunta he descubierto que sugiere este .

Por último, he intentado una última instalar, pero esta vez desde el repositorio en comparación con el alquitrán que he descargado. Esto parece haber resuelto el problema.

sudo apt-get install python-imaging

A pesar de que no he respondido por completo el problema original, he encontrado una solución alternativa, y la esperanza de que la información anterior será capaz de ayudar a alguien más en esta situación!

Otros consejos

Me corrigió esta situación mediante la instalación del libjpeg desarrollo:

sudo apt-get install libjpeg8-dev

A continuación, vuelva a instalar el módulo PIL por completo.

(estoy usando un entorno virtual, pero debería funcionar igual de bien corriendo Python como estándar)

No ha instalado la biblioteca libjpeg. Haga lo siguiente:

sudo apt-get install libjpeg

y volver a ejecutar la instalación de PIL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top