On Mon, Apr 14, 2008 at 11:27 AM, Sebastian Haase <[EMAIL PROTECTED]> wrote: > Hi, > > this is a short question: > > Why does Image.open fail after reload(Image) ? > > Here is what I get : > {{{ > >>> import Image > >>> i = Image.open(r"/Users/labuser/Desktop/Picture 5.png") > >>> i.size > (1920, 1200) > >>> reload(Image) > <module 'Image' from '....../PIL/Image.pyc'> > >>> i = Image.open("Picture 5.png") > Traceback (most recent call last): > File "<input>", line 1, in <module> > File "......./PIL/Image.py", line 1916, in open > raise IOError("cannot identify image file") > IOError: cannot identify image file > >>> Image.VERSION > '1.1.6' > }}} > > Since I ran into this a couple times, > I was just wondering if this could be fixed ? > > Thanks for PIL, > Sebastian Haase >
It appears that in Image.py there are two functions named preinit() and init(). While preinit() seems harmless , I found that init() calls __import__(f, globals(), locals(), []) with f being every files found ending in "ImagePlugin.py" (without the '.py') I guess that these calls are supposed to fill in the dictionaries OPEN, SAVE and ID (and more). But __import__ does nothing when called the second time for a given file (import is no reload). So they stay empty. Any idea ho to fix this ? How about changing these lines _initialized = 0 ID = [] OPEN = {} MIME = {} SAVE = {} EXTENSION = {} into try: _initialied # check if we are imported and not reloaded except: _initialized = 0 ID = [] OPEN = {} MIME = {} SAVE = {} EXTENSION = {} Cheers, Sebastian Haase _______________________________________________ Image-SIG maillist - Image-SIG@python.org http://mail.python.org/mailman/listinfo/image-sig