me enough about compiling and linking C to puzzle out why this package isn't
installing seamlessly.
Mark
Mark Twenhafel wrote:
/ Try adding
/>>/
/>>/ print Image.core.__file__
/>>/
/>>/ to your script and make sure that the output is what you expect.
/>
what was the result of that?
redpoint:~/sandbox/python/persfin1 mark$ python
Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
import Image
print Image.core.__file__
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL/_imaging.so
/ At this point, my working hypothesis is that I did not install libjpeg
/>>/ correctly. I'm working on OS X Tiger. What I did was download
/>>/ "jpegsrc.v8a.tar.gz"; double-click in my download window in Firefox to
/>>/ untar; move the untarred "jpeg-8" folder to /Application; open Terminal
/>>/ and cd'ed to /Applications/jpeg-8; finally, I ran "./configure", "make",
/>>/ and "make install".
/>>/
/>>/ It could be--and I don't know--that this install procedure did not
/>>/ correctly add libjpeg to my Python 2.6 installation
/>
no it wouldn't have done that.
/> or that I need to
/>>/ rebuild site-packages/PIL/_imaging.so in order to link-in libjpeg.
/>
indeed you do.
/ Belated point of clarification: I subsequently installed PIL using the
/>>/ these instructions:
/>>/ $ cd Imaging-1.1.7
/>>/ $ python setup.py build_ext -i
/>>/ $ python selftest.py
/>
that should have built a new PIL, but it won't have installed it.
Did the selftest run OK?
redpoint:/Applications/Imaging-1.1.7 mark$ python selftest.py
--------------------------------------------------------------------
PIL 1.1.7 TEST SUMMARY
--------------------------------------------------------------------
Python modules loaded from ./PIL
Binary modules loaded from ./PIL
--------------------------------------------------------------------
--- PIL CORE support ok
--- TKINTER support ok
--- JPEG support ok
--- ZLIB (PNG/ZIP) support ok
--- FREETYPE2 support ok
*** LITTLECMS support not installed
--------------------------------------------------------------------
Running selftest:
--- 57 tests passed.
redpoint:/Applications/Imaging-1.1.7 mark$
/ I just noticed that the file "site-packages/PIL/_imaging.so" was created
/>>/ last October.
/>
which is why you are getting an old one here.
The last few lines of a long listing of PIL follow:
-rw-r--r-- 1 root admin 3047 Oct 11 2009 XpmImagePlugin.pyc
-rw-r--r-- 1 root admin 231 Dec 3 2006 __init__.py
-rw-r--r-- 1 root admin 180 Oct 11 2009 __init__.pyc
-rw-r--r-- 1 root admin 1406408 Oct 11 2009 _imaging.so
-rw-r--r-- 1 root admin 87420 Oct 11 2009 _imagingft.so
-rw-r--r-- 1 root admin 89240 Oct 11 2009 _imagingmath.so
-rw-r--r-- 1 root admin 54056 Oct 11 2009 _imagingtk.so
redpoint:/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL mark$
/ If so, would be be possible or likely that this was built
/>>/ using the version of libjpeg that didn't install on my machine?
/>
yup.
/ If this
/>>/ is correct, what is the best way to proceed? My first inclination is to
/>>/ delete the directory site-packages/PIL and reinstall.
/>
yup -- you may not even need to delete, but it won't hurt.
Take a look for a new _imaging.so that you should have just built. If
you really want to know what it's linked to, try:
$ otool -L _imaging.so
Interpreting this is beyond me, at this point:
redpoint:/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL
mark$ otool -L _imaging.so
_imaging.so:
/usr/local/lib/libjpeg.7.dylib (compatibility version 8.0.0, current
version 8.0.0)
/opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current
version 1.2.3)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 88.3.9)
redpoint:/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL mark$
But you might just do:
setup.py install
and see if it now works.
The following code still produces the following exception:
redpoint:~/sandbox/python/persfin1 mark$ cat ./mwm.py
#!/usr/local/bin/python
from Tkinter import *
import Image
import ImageTk
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.grid()
self.createWidgets()
def createWidgets(self):
self.cnv = Canvas(self)
self.img =
ImageTk.PhotoImage(Image.open("/Applications/Imaging-1.1.7/Images/lena.jpg"))
cvnitem = self.cnv.create_image(100, 100, image=self.img)
self.cnv.grid()
app = Application()
app.master.title("Sample application")
app.mainloop()
redpoint:~/sandbox/python/persfin1 mark$ ./mwm.py
Traceback (most recent call last):
File "./mwm.py", line 18, in <module>
app = Application()
File "./mwm.py", line 10, in __init__
self.createWidgets()
File "./mwm.py", line 14, in createWidgets
self.img =
ImageTk.PhotoImage(Image.open("/Applications/Imaging-1.1.7/Images/lena.jpg"))
File
"/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL/ImageTk.py",
line 116, in __init__
self.paste(image)
File
"/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL/ImageTk.py",
line 166, in paste
im.load()
File
"/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL/ImageFile.py",
line 180, in load
d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
File
"/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL/Image.py",
line 375, in _getdecoder
raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available
redpoint:~/sandbox/python/persfin1 mark$
We really do need to get a Mac binary built!
-CHB
--
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov <http://mail.python.org/mailman/listinfo/image-sig>
Thanks to anyone looking at this. Like I said, I want to get this running, but
I'm not asking
anyone to do my own debugging. I'll keep hacking away at this at my level.
Mark