Django – No hay módulo llamado PIL

Necesito usar ImageField en mis modelos y parece que PIL no se instala:

 >>> from PIL import Image Traceback (most recent call last): File "", line 1, in  ImportError: No module named PIL 

Sin embargo, puedo ver imágenes de python instaladas en Synaptic . Cuando bash instalarlo fácilmente, obtengo:

 $ sudo easy_install-2.7 PIL [sudo] password for glide: Searching for PIL Reading http://pypi.python.org/simple/PIL/ Reading http://www.pythonware.com/products/pil Reading http://effbot.org/zone/pil-changes-115.htm Reading http://effbot.org/downloads/#Imaging Best match: PIL 1.1.7 Downloading http://effbot.org/media/downloads/PIL-1.1.7.tar.gz Processing PIL-1.1.7.tar.gz Running PIL-1.1.7/setup.py -q bdist_egg --dist-dir /tmp/easy_install-HvRSQr/PIL-1.1.7/egg-dist-tmp-nDJHmU WARNING: '' not a valid package name; please use only.-separated package names in setup.py _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 -------------------------------------------------------------------- PIL 1.1.7 SETUP SUMMARY -------------------------------------------------------------------- version 1.1.7 platform linux2 2.7.1 (r271:86832, May 2 2011, 14:22:06) [GCC 4.4.3] -------------------------------------------------------------------- *** TKINTER support not available *** JPEG support not available --- ZLIB (PNG/ZIP) support 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. To check the build, run the selftest.py script. zip_safe flag not set; analyzing archive contents... Image: module references __file__ Adding PIL 1.1.7 to easy-install.pth file Installing pilconvert.py script to /usr/local/bin Installing pilprint.py script to /usr/local/bin Installing pildriver.py script to /usr/local/bin Installing pilfont.py script to /usr/local/bin Installing pilfile.py script to /usr/local/bin Installed /usr/local/lib/python2.7/site-packages/PIL-1.1.7-py2.7-linux-x86_64.egg Processing dependencies for PIL Finished processing dependencies for PIL 

Y esto todavía no es utilizable. ¿Tengo que hacer algo más para poder usar el tipo de campo ImageField ?

Samuele Mattiuzzo me dio la respuesta:

¿Has probado con importar imagen en lugar de desde PIL importar imagen? A veces esto resuelve el problema.

También a veces esto puede no funcionar:

 pip install pil 

Echa un vistazo a esto: error gcc al intentar instalar PIL en un virtualenv Python2.6

Sé que esta es una pregunta antigua que ya se respondió, pero encontré otra forma de resolverlo que corrigió los problemas en mi servidor. El paquete PIL se instaló con easy_install y se almacenó en “/usr/local/lib/python2.6/site-packages/PIL-1.1.7-py2.6-linux-x86_64.egg”. Mirando en su contenido resultó en:

 ArgImagePlugin.py FpxImagePlugin.py ImageColor.pyc ImagePalette.py _imagingmath.so PaletteFile.pyc SunImagePlugin.py ArgImagePlugin.pyc FpxImagePlugin.pyc ImageDraw2.py ImagePalette.pyc _imaging.py PalmImagePlugin.py SunImagePlugin.pyc BdfFontFile.py GbrImagePlugin.py ImageDraw2.pyc ImagePath.py _imaging.pyc PalmImagePlugin.pyc TarIO.py BdfFontFile.pyc GbrImagePlugin.pyc ImageDraw.py ImagePath.pyc _imaging.so PcdImagePlugin.py TarIO.pyc BmpImagePlugin.py GdImageFile.py ImageDraw.pyc Image.py ImImagePlugin.py PcdImagePlugin.pyc TgaImagePlugin.py BmpImagePlugin.pyc GdImageFile.pyc ImageEnhance.py Image.pyc ImImagePlugin.pyc PcfFontFile.py TgaImagePlugin.pyc BufrStubImagePlugin.py GifImagePlugin.py ImageEnhance.pyc ImageQt.py ImtImagePlugin.py PcfFontFile.pyc TiffImagePlugin.py BufrStubImagePlugin.pyc GifImagePlugin.pyc ImageFileIO.py ImageQt.pyc ImtImagePlugin.pyc PcxImagePlugin.py TiffImagePlugin.pyc ContainerIO.py GimpGradientFile.py ImageFileIO.pyc ImageSequence.py __init__.py PcxImagePlugin.pyc TiffTags.py ContainerIO.pyc GimpGradientFile.pyc ImageFile.py ImageSequence.pyc __init__.pyc PdfImagePlugin.py TiffTags.pyc CurImagePlugin.py GimpPaletteFile.py ImageFile.pyc ImageShow.py IptcImagePlugin.py PdfImagePlugin.pyc WalImageFile.py CurImagePlugin.pyc GimpPaletteFile.pyc ImageFilter.py ImageShow.pyc IptcImagePlugin.pyc PixarImagePlugin.py WalImageFile.pyc DcxImagePlugin.py GribStubImagePlugin.py ImageFilter.pyc ImageStat.py JpegImagePlugin.py PixarImagePlugin.pyc WmfImagePlugin.py DcxImagePlugin.pyc GribStubImagePlugin.pyc ImageFont.py ImageStat.pyc JpegImagePlugin.pyc PngImagePlugin.py WmfImagePlugin.pyc EGG-INFO Hdf5StubImagePlugin.py ImageFont.pyc ImageTk.py McIdasImagePlugin.py PngImagePlugin.pyc XbmImagePlugin.py EpsImagePlugin.py Hdf5StubImagePlugin.pyc ImageGL.py ImageTk.pyc McIdasImagePlugin.pyc PpmImagePlugin.py XbmImagePlugin.pyc EpsImagePlugin.pyc IcnsImagePlugin.py ImageGL.pyc ImageTransform.py MicImagePlugin.py PpmImagePlugin.pyc XpmImagePlugin.py ExifTags.py IcnsImagePlugin.pyc ImageGrab.py ImageTransform.pyc MicImagePlugin.pyc PsdImagePlugin.py XpmImagePlugin.pyc ExifTags.pyc IcoImagePlugin.py ImageGrab.pyc ImageWin.py MpegImagePlugin.py PsdImagePlugin.pyc XVThumbImagePlugin.py FitsStubImagePlugin.py IcoImagePlugin.pyc ImageMath.py ImageWin.pyc MpegImagePlugin.pyc PSDraw.py XVThumbImagePlugin.pyc FitsStubImagePlugin.pyc ImageChops.py ImageMath.pyc _imagingft.py MspImagePlugin.py PSDraw.pyc FliImagePlugin.py ImageChops.pyc ImageMode.py _imagingft.pyc MspImagePlugin.pyc SgiImagePlugin.py FliImagePlugin.pyc ImageCms.py ImageMode.pyc _imagingft.so OleFileIO.py SgiImagePlugin.pyc FontFile.py ImageCms.pyc ImageOps.py _imagingmath.py OleFileIO.pyc SpiderImagePlugin.py FontFile.pyc ImageColor.py ImageOps.pyc _imagingmath.pyc PaletteFile.py SpiderImagePlugin.pyc 

Bien. No hay módulo PIL para importar desde. Entonces, hice un truco sucio. Hizo una carpeta llamada PIL y copió todos estos archivos dentro de ella.

 mkdir PIL cp * PIL/ 

Entonces, todo empezó a funcionar bien. Creo que este es el problema, según el paquete de instalación que use, se implementará de una manera diferente. 😉

Si su pregunta es “¿por qué el soporte para JPEG, FREETYPE2, etc., no está disponible?”,

PIL se instala con el soporte para los paquetes que ya están presentes en su sistema mientras instala PIL.

Para el soporte de JPEG y FREETYPE, instale los siguientes paquetes:

 sudo aptitude install libjpeg libjpeg-dev sudo aptitude install libfreetype6 libfreetype6-dev 

Si lo acaba de instalar en OS X Lion y una biblioteca de terceros no puede from PIL import image , entonces solo puede hacer un ln -s PIL-OSX... PIL

El problema proviene de cómo los gestores de paquetes configuran (.py) PIL:

https://mail.python.org/pipermail/image-sig/2010-August/006480.html

Soluciones posibles:

  • Cambie el nombre del HUEVO a “PIL”.
  • Ajuste su código a su paquete instalado (no siempre es posible).
  • Haz un hack como lo hizo Jayme (en otra parte de esta página).
  • Utilice un paquete diferente para la instalación.
  • Configure manualmente setup.py para su instalación.

“Cambiar el nombre del EGG” no se describe en ninguna otra parte de esta página, así que lo describiré aquí:

 cd /usr/local/lib/python2.6/site-packages/ mv PIL-1.1.7-py2.6-linux-i686.egg PIL 

Puede ser sorprendente, pero esto realmente funciona en muchas situaciones.