So, I finally successfully installed PIL (after many difficulties) on RHEL5 with Django (development version) and Python 2.6 installed on / opt / python 2.6.
Running selftest.py shows that everything looks right:
$ python2.6 selftest.py
57 tests passed.
I can upload .png and .gif files without difficulty, but I encounter problems when trying to upload .jpg files using ImageField: "Upload a valid image. The file you uploaded was either not shaped or a damaged image."
I saw this other question and checked the test to see if the PIL image would work, and it did:
>>> from PIL import Image
>>> trial_image=Image.open("/tmp/jordanthecoder.jpg")
>>> trial_image.verify()
>>>
? , JPEG . , FileField, , , GIF, PNG JPEG, .
, , :
$ python2.6 -v
Python 2.6.4 (r264:75706, Jan 15 2010, 14:42:33)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
dlopen("/opt/python2.6/lib/python2.6/lib-dynload/readline.so", 2);
import readline
>>> from PIL import Image
import PIL
import PIL
import PIL.Image
import FixTk
import ctypes
import ctypes
dlopen("/opt/python2.6/lib/python2.6/lib-dynload/_ctypes.so", 2);
import _ctypes
import struct
dlopen("/opt/python2.6/lib/python2.6/lib-dynload/_struct.so", 2);
import _struct
import ctypes._endian
dlopen("/opt/python2.6/lib/python2.6/site-packages/PIL/_imaging.so", 2);
import PIL._imaging
import PIL.ImageMode
import PIL.ImagePalette
dlopen("/opt/python2.6/lib/python2.6/lib-dynload/array.so", 2);
import array
import string
import re
import sre_compile
import _sre
import sre_parse
import sre_constants
dlopen("/opt/python2.6/lib/python2.6/lib-dynload/strop.so", 2);
import strop
dlopen("/opt/python2.6/lib/python2.6/lib-dynload/operator.so", 2);
import operator
>>> trial_image=Image.open("/tmp/jordanthecoder.jpg")
import PIL.BmpImagePlugin
import PIL.ImageFile
import traceback
import PIL.GifImagePlugin
import PIL.JpegImagePlugin
import PIL.PpmImagePlugin
import PIL.PngImagePlugin
>>> trial_image.verify()
>>> fake_image = Image.open("/tmp/fakeimage.jpg")
import PIL.CurImagePlugin
import PIL.ArgImagePlugin
import marshal
import PIL.Hdf5StubImagePlugin
import PIL.MspImagePlugin
import PIL.MicImagePlugin
import PIL.TiffImagePlugin
import PIL.OleFileIO
import StringIO
import PIL.FitsStubImagePlugin
import PIL.MpegImagePlugin
import PIL.PixarImagePlugin
import PIL.DcxImagePlugin
import PIL.PcxImagePlugin
import PIL.WmfImagePlugin
import PIL.XVThumbImagePlugin
import PIL.XbmImagePlugin
import PIL.ImtImagePlugin
import PIL.IptcImagePlugin
import tempfile
import random
import __future__
dlopen("/opt/python2.6/lib/python2.6/lib-dynload/math.so", 2);
import math
dlopen("/opt/python2.6/lib/python2.6/lib-dynload/binascii.so", 2);
import binascii
dlopen("/opt/python2.6/lib/python2.6/lib-dynload/_random.so", 2);
import _random
dlopen("/opt/python2.6/lib/python2.6/lib-dynload/cStringIO.so", 2);
import cStringIO
dlopen("/opt/python2.6/lib/python2.6/lib-dynload/fcntl.so", 2);
import fcntl
import thread
import PIL.GribStubImagePlugin
import PIL.TgaImagePlugin
import PIL.BufrStubImagePlugin
import PIL.FpxImagePlugin
import PIL.SgiImagePlugin
import PIL.FliImagePlugin
import PIL.PcdImagePlugin
import PIL.PalmImagePlugin
import PIL.XpmImagePlugin
import PIL.ImImagePlugin
import PIL.SunImagePlugin
import PIL.IcnsImagePlugin
import PIL.McIdasImagePlugin
import PIL.PdfImagePlugin
import PIL.GbrImagePlugin
import PIL.EpsImagePlugin
import PIL.IcoImagePlugin
import PIL.SpiderImagePlugin
import PIL.PsdImagePlugin
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/python2.6/lib/python2.6/site-packages/PIL/Image.py", line 1916, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file
UPDATE
$python manage.py( ):
Python 2.6.4 (r264:75706, Jan 15 2010, 14:42:33)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from PIL import Image
import PIL
import PIL
import PIL.Image
import FixTk
import ctypes
import ctypes
dlopen("/opt/python2.6/lib/python2.6/lib-dynload/_ctypes.so", 2);
import _ctypes
import ctypes._endian
dlopen("/opt/python2.6/lib/python2.6/site-packages/PIL/_imaging.so", 2);
import PIL._imaging
import PIL.ImageMode
import PIL.ImagePalette
>>> trial_image=Image.open("/tmp/jordanthecoder.jpg")
import PIL.BmpImagePlugin
import PIL.ImageFile
import PIL.GifImagePlugin
import PIL.JpegImagePlugin
import PIL.PpmImagePlugin
import PIL.PngImagePlugin
>>> trial_image.verify()
>>>
# 2:
, ImageField , PIL . , ( views.py):
def test_image(request):
i = Image.open("/tmp/jordanthecoder.jpg")
t = i.verify()
return HttpResponse("Image is "+repr(i.info))
-:
Image is {'jfif_version': (1, 1), 'jfif': 257, 'jfif_unit': 1, 'jfif_density': (72, 72), 'dpi': (72, 72)}
# 3
, . , , , -.
JSON, , . , . , - /opt/python 2.6/...
-:
django.contrib.sessions.*, django.core.email, django.core.handlers.*, django.core.mail, django.core.mimetypes, django.core.os, django.core.random, django.core.smtplib, django.core.socket, django.core.time, django.middleware.*, email.*, encodings.ascii, hmac, mimetypes, mod_wsgi, smtplib, uu
:
code, codeop, django.core.management.*, readline, rlcompleter, settings, user
** # 4 **
, , apache libjpeg.so, python . , Django.