Installing PIL on Djangostack 1.1.1/1.2/1.3

The popular Python Imaging Library (PIL) adds image processing capabilities to your Python interpreter. This library supports many file formats and provides powerful image processing and graphics capabilities. I normally use Bitnami Djangostack for most of my Django development, which doesn’t come with PIL installed by default so in this post I’m summing up what steps I’ve taken to get that up and running.

This is the preamble: I recently got a new desktop machine (an iMac Intel core i3) with the latest OS installed (10.6.4), so I had to re-install a whole bunch of stuff. In order to set up the new mac I used Migration Assistant. This neat piece of software cloned almost all I had on the previous machine onto the new one, and that worked just wonderfully. However I was expecting some troubles with low-level libraries.. and that just happened with PIL this morning. It costed a 2-3 hours headache but the web eventually stirred me in the right direction… in this post I’m just summarising how I got around the problem.

The problem: missing gcc compiler

Yeah, first of all, let’s make it clear what the problem was: I usually run my django projects using Bitnami Djangostack (a closed environment that includes ready-to-run versions of Apache, MySQL, PostgreSQL, SQLite, Python and Django and required dependencies). Today I needed to use PIL in a project of mine, so was trying to install it using easy_install within the stack:

bash-3.2$ easy_install PIL
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 /var/folders/kd/kdz+WPeYFKik+eU2zVQ+tE+++TI/-Tmp-/easy_install-R5yISp/PIL-1.1.7/egg-dist-tmp-crzD37
WARNING: '' not a valid package name; please use only.-separated package names in setup.py
--- using frameworks at /System/Library/Frameworks
unable to execute gcc: No such file or directory
error: Setup script exited with error: command 'gcc' failed with exit status 1

Apparently the key error there is “unable to execute gcc: No such file or directory“. The installer can’t find the C compiler. Pretty weird cause I had already installed Xcode and all the rest (I ran the iPhone simulator a couple of days ago). I thought that maybe cloning the disk caused some unwanted file-renaming and so on… so I reinstalled Apple’s Developer Tools using the OS installation CD that came with the computer.
After 10 minutes of low screeches and CD-ROM loading, the installation was over and I had another go:

[mac]@macs-iMac:/Applications/djangostack-1.1.1-0/projects/ltb_project/src/ltb>usemydjangostack
bash-3.2$ easy_install PIL
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 /var/folders/kd/kdz+WPeYFKik+eU2zVQ+tE+++TI/-Tmp-/easy_install-oET2AJ/PIL-1.1.7/egg-dist-tmp-Ptx6Q-
WARNING: '' not a valid package name; please use only.-separated package names in setup.py
--- using frameworks at /System/Library/Frameworks
cc1: error: unrecognized command line option "-Wno-long-double"
error: Setup script exited with error: command 'gcc' failed with exit status 1
bash-3.2$

Looked like I made some progress, as the error now seemed more specific: “cc1: error: unrecognized command line option “-Wno-long-double“”. The reason why this is happening goes beyond my knowledge, so in desperate need of a quick fix I started a long google-journey.
Luckily I soon ran into this post on stackOverflow “Xcode gcc exit status 1“. Essentially, it suggests to run setup.py using to an older gcc version (gcc-4.0). Tried that and it worked just fine!

Following some blog posts, on a hunch, I ran setup.py pointing to an older gcc version (gcc-4.0).

CC=’/usr/bin/gcc-4.0′ python setup.py build

The fix

After downloading the PIL library from here, I built it:

bash-3.2$ CC='/usr/bin/gcc-4.0' python setup.py build
running build
running build_py
running build_ext
--- using frameworks at /System/Library/Frameworks
building '_imaging' extension
/usr/bin/gcc-4.0 -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -I/System/Library/Frameworks/Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/Headers -IlibImaging -I/Applications/djangostack-1.1.1-0/python/include -I/usr/local/include -I/usr/include -I/Applications/djangostack-1.1.1-0/python/include/python2.5 -c _imaging.c -o build/temp.macosx-10.4-i386-2.5/_imaging.o
_imaging.c:3017: warning: initialization from incompatible pointer type
_imaging.c:3077: warning: initialization from incompatible pointer type
/usr/bin/gcc-4.0 -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -I/System/Library/Frameworks/Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/Headers -IlibImaging -I/Applications/djangostack-1.1.1-0/python/include -I/usr/local/include -I/usr/include -I/Applications/djangostack-1.1.1-0/python/include/python2.5 -c decode.c -o build/temp.macosx-10.4-i386-2.5/decode.o
/usr/bin/gcc-4.0 -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -I/System/Library/Frameworks/Tcl.framework/Headers -
[......various other warnings........]

gcc -L/Applications/djangostack-1.1.1-0/common/lib -bundle -undefined dynamic_lookup build/temp.macosx-10.4-i386-2.5/_imaging.o build/temp.macosx-10.4-i386-2.5/decode.o build/temp.macosx-10.4-i386-2.5/encode.o build/temp.macosx-10.4-i386-2.5/map.o build/temp.macosx-10.4-i386-2.5/display.o build/temp.macosx-10.4-i386-2.5/outline.o build/temp.macosx-10.4-i386-2.5/path.o build/temp.macosx-10.4-i386-2.5/libImaging/Access.o build/temp.macosx-10.4-i386-2.5/libImaging/Antialias.o build/temp.macosx-10.4-i386-2.5/libImaging/Bands.o build/temp.macosx-10.4-i386-2.5/libImaging/BitDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/Blend.o build/temp.macosx-10.4-i386-2.5/libImaging/Chops.o build/temp.macosx-10.4-i386-2.5/libImaging/Convert.o build/temp.macosx-10.4-i386-2.5/libImaging/ConvertYCbCr.o build/temp.macosx-10.4-i386-2.5/libImaging/Copy.o build/temp.macosx-10.4-i386-2.5/libImaging/Crc32.o build/temp.macosx-10.4-i386-2.5/libImaging/Crop.o build/temp.macosx-10.4-i386-2.5/libImaging/Dib.o build/temp.macosx-10.4-i386-2.5/libImaging/Draw.o build/temp.macosx-10.4-i386-2.5/libImaging/Effects.o build/temp.macosx-10.4-i386-2.5/libImaging/EpsEncode.o build/temp.macosx-10.4-i386-2.5/libImaging/File.o build/temp.macosx-10.4-i386-2.5/libImaging/Fill.o build/temp.macosx-10.4-i386-2.5/libImaging/Filter.o build/temp.macosx-10.4-i386-2.5/libImaging/FliDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/Geometry.o build/temp.macosx-10.4-i386-2.5/libImaging/GetBBox.o build/temp.macosx-10.4-i386-2.5/libImaging/GifDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/GifEncode.o build/temp.macosx-10.4-i386-2.5/libImaging/HexDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/Histo.o build/temp.macosx-10.4-i386-2.5/libImaging/JpegDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/JpegEncode.o build/temp.macosx-10.4-i386-2.5/libImaging/LzwDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/Matrix.o build/temp.macosx-10.4-i386-2.5/libImaging/ModeFilter.o build/temp.macosx-10.4-i386-2.5/libImaging/MspDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/Negative.o build/temp.macosx-10.4-i386-2.5/libImaging/Offset.o build/temp.macosx-10.4-i386-2.5/libImaging/Pack.o build/temp.macosx-10.4-i386-2.5/libImaging/PackDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/Palette.o build/temp.macosx-10.4-i386-2.5/libImaging/Paste.o build/temp.macosx-10.4-i386-2.5/libImaging/Quant.o build/temp.macosx-10.4-i386-2.5/libImaging/QuantHash.o build/temp.macosx-10.4-i386-2.5/libImaging/QuantHeap.o build/temp.macosx-10.4-i386-2.5/libImaging/PcdDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/PcxDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/PcxEncode.o build/temp.macosx-10.4-i386-2.5/libImaging/Point.o build/temp.macosx-10.4-i386-2.5/libImaging/RankFilter.o build/temp.macosx-10.4-i386-2.5/libImaging/RawDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/RawEncode.o build/temp.macosx-10.4-i386-2.5/libImaging/Storage.o build/temp.macosx-10.4-i386-2.5/libImaging/SunRleDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/TgaRleDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/Unpack.o build/temp.macosx-10.4-i386-2.5/libImaging/UnpackYCC.o build/temp.macosx-10.4-i386-2.5/libImaging/UnsharpMask.o build/temp.macosx-10.4-i386-2.5/libImaging/XbmDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/XbmEncode.o build/temp.macosx-10.4-i386-2.5/libImaging/ZipDecode.o build/temp.macosx-10.4-i386-2.5/libImaging/ZipEncode.o -L/usr/local/lib -L/Applications/djangostack-1.1.1-0/python/lib -L/usr/lib -ljpeg -lz -o build/lib.macosx-10.4-i386-2.5/_imaging.so
ld: warning: in build/temp.macosx-10.4-i386-2.5/_imaging.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/decode.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/encode.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/map.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/display.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/outline.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/path.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/libImaging/Access.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/libImaging/Antialias.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/libImaging/Bands.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/libImaging/BitDecode.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/libImaging/Blend.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/libImaging/Chops.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/libImaging/Convert.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/libImaging/ConvertYCbCr.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/libImaging/Copy.o, file was built for i386 which is not the architecture being linked (x86_64)
[...various other warnings....]

building '_imagingtk' extension
creating build/temp.macosx-10.4-i386-2.5/Tk
/usr/bin/gcc-4.0 -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/System/Library/Frameworks/Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/Headers -IlibImaging -I/Applications/djangostack-1.1.1-0/python/include -I/usr/local/include -I/usr/include -I/Applications/djangostack-1.1.1-0/python/include/python2.5 -c _imagingtk.c -o build/temp.macosx-10.4-i386-2.5/_imagingtk.o -framework Tcl -framework Tk
In file included from /System/Library/Frameworks/Tk.framework/Headers/tk.h:78,
                 from _imagingtk.c:19:
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:131: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:334: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:453: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:471: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:496: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:497: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:509: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:522: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:1056: warning: function declaration isn~Rt a prototype
i686-apple-darwin10-gcc-4.0.1: -framework: linker input file unused because linking not done
i686-apple-darwin10-gcc-4.0.1: Tcl: linker input file unused because linking not done
i686-apple-darwin10-gcc-4.0.1: -framework: linker input file unused because linking not done
i686-apple-darwin10-gcc-4.0.1: Tk: linker input file unused because linking not done
/usr/bin/gcc-4.0 -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/System/Library/Frameworks/Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/Headers -IlibImaging -I/Applications/djangostack-1.1.1-0/python/include -I/usr/local/include -I/usr/include -I/Applications/djangostack-1.1.1-0/python/include/python2.5 -c Tk/tkImaging.c -o build/temp.macosx-10.4-i386-2.5/Tk/tkImaging.o -framework Tcl -framework Tk
In file included from /System/Library/Frameworks/Tk.framework/Headers/tk.h:78,
                 from Tk/tkImaging.c:51:
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:131: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:334: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:453: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:471: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:496: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:497: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:509: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:522: warning: function declaration isn~Rt a prototype
/System/Library/Frameworks/Tk.framework/Headers/X11/Xlib.h:1056: warning: function declaration isn~Rt a prototype
i686-apple-darwin10-gcc-4.0.1: -framework: linker input file unused because linking not done
i686-apple-darwin10-gcc-4.0.1: Tcl: linker input file unused because linking not done
i686-apple-darwin10-gcc-4.0.1: -framework: linker input file unused because linking not done
i686-apple-darwin10-gcc-4.0.1: Tk: linker input file unused because linking not done
gcc -L/Applications/djangostack-1.1.1-0/common/lib -bundle -undefined dynamic_lookup build/temp.macosx-10.4-i386-2.5/_imagingtk.o build/temp.macosx-10.4-i386-2.5/Tk/tkImaging.o -L/usr/local/lib -L/Applications/djangostack-1.1.1-0/python/lib -L/usr/lib -o build/lib.macosx-10.4-i386-2.5/_imagingtk.so -framework Tcl -framework Tk
ld: warning: in build/temp.macosx-10.4-i386-2.5/_imagingtk.o, file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in build/temp.macosx-10.4-i386-2.5/Tk/tkImaging.o, file was built for i386 which is not the architecture being linked (x86_64)
building '_imagingmath' extension
/usr/bin/gcc-4.0 -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/System/Library/Frameworks/Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/Headers -IlibImaging -I/Applications/djangostack-1.1.1-0/python/include -I/usr/local/include -I/usr/include -I/Applications/djangostack-1.1.1-0/python/include/python2.5 -c _imagingmath.c -o build/temp.macosx-10.4-i386-2.5/_imagingmath.o
gcc -L/Applications/djangostack-1.1.1-0/common/lib -bundle -undefined dynamic_lookup build/temp.macosx-10.4-i386-2.5/_imagingmath.o -L/usr/local/lib -L/Applications/djangostack-1.1.1-0/python/lib -L/usr/lib -o build/lib.macosx-10.4-i386-2.5/_imagingmath.so
ld: warning: in build/temp.macosx-10.4-i386-2.5/_imagingmath.o, file was built for i386 which is not the architecture being linked (x86_64)
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      darwin 2.5.4 (r254:67916, Nov 24 2009, 10:46:19)
              [GCC 4.0.1 (Apple Computer, Inc. build 5250)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support 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.
running build_scripts
creating build/scripts-2.5
copying and adjusting Scripts/pilconvert.py -> build/scripts-2.5
copying and adjusting Scripts/pildriver.py -> build/scripts-2.5
copying and adjusting Scripts/pilfile.py -> build/scripts-2.5
copying Scripts/pilfont.py -> build/scripts-2.5
copying and adjusting Scripts/pilprint.py -> build/scripts-2.5
changing mode of build/scripts-2.5/pilconvert.py from 644 to 755
changing mode of build/scripts-2.5/pildriver.py from 644 to 755
changing mode of build/scripts-2.5/pilfile.py from 644 to 755
changing mode of build/scripts-2.5/pilfont.py from 644 to 755
changing mode of build/scripts-2.5/pilprint.py from 644 to 755

Then I installed it:

bash-3.2$ CC='/usr/bin/gcc-4.0' python setup.py install
running install
running build
running build_py
running build_ext
--- using frameworks at /System/Library/Frameworks
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      darwin 2.5.4 (r254:67916, Nov 24 2009, 10:46:19)
              [GCC 4.0.1 (Apple Computer, Inc. build 5250)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support 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.
running build_scripts
running install_lib
creating /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/__init__.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/_imaging.so -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/_imagingmath.so -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/_imagingtk.so -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ArgImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/BdfFontFile.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/BmpImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/BufrStubImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ContainerIO.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/CurImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/DcxImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/EpsImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ExifTags.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/FitsStubImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/FliImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/FontFile.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/FpxImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/GbrImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/GdImageFile.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/GifImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/GimpGradientFile.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/GimpPaletteFile.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/GribStubImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/Hdf5StubImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/IcnsImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/IcoImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/Image.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageChops.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageCms.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageColor.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageDraw.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageDraw2.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageEnhance.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageFile.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageFileIO.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageFilter.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageFont.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageGL.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageGrab.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageMath.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageMode.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageOps.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImagePalette.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImagePath.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageQt.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageSequence.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageShow.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageStat.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageTk.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageTransform.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImageWin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/ImtImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/IptcImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/JpegImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/McIdasImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/MicImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/MpegImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/MspImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/OleFileIO.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/PaletteFile.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/PalmImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/PcdImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/PcfFontFile.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/PcxImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/PdfImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/PixarImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/PngImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/PpmImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/PsdImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/PSDraw.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/SgiImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/SpiderImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/SunImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/TarIO.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/TgaImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/TiffImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/TiffTags.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/WalImageFile.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/WmfImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/XbmImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/XpmImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
copying build/lib.macosx-10.4-i386-2.5/XVThumbImagePlugin.py -> /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/__init__.py to __init__.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ArgImagePlugin.py to ArgImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/BdfFontFile.py to BdfFontFile.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/BmpImagePlugin.py to BmpImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/BufrStubImagePlugin.py to BufrStubImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ContainerIO.py to ContainerIO.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/CurImagePlugin.py to CurImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/DcxImagePlugin.py to DcxImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/EpsImagePlugin.py to EpsImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ExifTags.py to ExifTags.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/FitsStubImagePlugin.py to FitsStubImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/FliImagePlugin.py to FliImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/FontFile.py to FontFile.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/FpxImagePlugin.py to FpxImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/GbrImagePlugin.py to GbrImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/GdImageFile.py to GdImageFile.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/GifImagePlugin.py to GifImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/GimpGradientFile.py to GimpGradientFile.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/GimpPaletteFile.py to GimpPaletteFile.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/GribStubImagePlugin.py to GribStubImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/Hdf5StubImagePlugin.py to Hdf5StubImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/IcnsImagePlugin.py to IcnsImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/IcoImagePlugin.py to IcoImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/Image.py to Image.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageChops.py to ImageChops.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageCms.py to ImageCms.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageColor.py to ImageColor.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageDraw.py to ImageDraw.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageDraw2.py to ImageDraw2.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageEnhance.py to ImageEnhance.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageFile.py to ImageFile.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageFileIO.py to ImageFileIO.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageFilter.py to ImageFilter.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageFont.py to ImageFont.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageGL.py to ImageGL.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageGrab.py to ImageGrab.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageMath.py to ImageMath.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageMode.py to ImageMode.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageOps.py to ImageOps.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImagePalette.py to ImagePalette.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImagePath.py to ImagePath.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageQt.py to ImageQt.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageSequence.py to ImageSequence.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageShow.py to ImageShow.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageStat.py to ImageStat.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageTk.py to ImageTk.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageTransform.py to ImageTransform.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImageWin.py to ImageWin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImImagePlugin.py to ImImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/ImtImagePlugin.py to ImtImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/IptcImagePlugin.py to IptcImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/JpegImagePlugin.py to JpegImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/McIdasImagePlugin.py to McIdasImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/MicImagePlugin.py to MicImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/MpegImagePlugin.py to MpegImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/MspImagePlugin.py to MspImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/OleFileIO.py to OleFileIO.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/PaletteFile.py to PaletteFile.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/PalmImagePlugin.py to PalmImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/PcdImagePlugin.py to PcdImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/PcfFontFile.py to PcfFontFile.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/PcxImagePlugin.py to PcxImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/PdfImagePlugin.py to PdfImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/PixarImagePlugin.py to PixarImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/PngImagePlugin.py to PngImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/PpmImagePlugin.py to PpmImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/PsdImagePlugin.py to PsdImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/PSDraw.py to PSDraw.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/SgiImagePlugin.py to SgiImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/SpiderImagePlugin.py to SpiderImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/SunImagePlugin.py to SunImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/TarIO.py to TarIO.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/TgaImagePlugin.py to TgaImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/TiffImagePlugin.py to TiffImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/TiffTags.py to TiffTags.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/WalImageFile.py to WalImageFile.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/WmfImagePlugin.py to WmfImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/XbmImagePlugin.py to XbmImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/XpmImagePlugin.py to XpmImagePlugin.pyc
byte-compiling /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/XVThumbImagePlugin.py to XVThumbImagePlugin.pyc
running install_scripts
copying build/scripts-2.5/pilconvert.py -> /Applications/djangostack-1.1.1-0/python/bin
copying build/scripts-2.5/pildriver.py -> /Applications/djangostack-1.1.1-0/python/bin
copying build/scripts-2.5/pilfile.py -> /Applications/djangostack-1.1.1-0/python/bin
copying build/scripts-2.5/pilfont.py -> /Applications/djangostack-1.1.1-0/python/bin
copying build/scripts-2.5/pilprint.py -> /Applications/djangostack-1.1.1-0/python/bin
changing mode of /Applications/djangostack-1.1.1-0/python/bin/pilconvert.py to 755
changing mode of /Applications/djangostack-1.1.1-0/python/bin/pildriver.py to 755
changing mode of /Applications/djangostack-1.1.1-0/python/bin/pilfile.py to 755
changing mode of /Applications/djangostack-1.1.1-0/python/bin/pilfont.py to 755
changing mode of /Applications/djangostack-1.1.1-0/python/bin/pilprint.py to 755
running install_egg_info
Writing /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL/PIL-1.1.7-py2.5.egg-info
creating /Applications/djangostack-1.1.1-0/python/lib/python2.5/site-packages/PIL.pth

And that was it: djangostack’s python now has PIL available too:

bash-3.2$ python
Python 2.5.4 (r254:67916, Nov 24 2009, 10:46:19)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import Image
>>> dir(Image)
['ADAPTIVE', 'AFFINE', 'ANTIALIAS', 'BICUBIC', 'BILINEAR', 'CONTAINER', 'CUBIC', 'DEBUG', 'EXTENSION', 'EXTENT', 'FLIP_LEFT_RIGHT', 'FLIP_TOP_BOTTOM', 'FLOYDSTEINBERG', 'ID', 'Image', 'ImageMode', 'ImagePalette', 'ImagePointHandler', 'ImageTransformHandler', 'IntType', 'LINEAR', 'MESH', 'MIME', 'MODES', 'NEAREST', 'NONE', 'NORMAL', 'OPEN', 'ORDERED', 'PERSPECTIVE', 'QUAD', 'RASTERIZE', 'ROTATE_180', 'ROTATE_270', 'ROTATE_90', 'SAVE', 'SEQUENCE', 'StringType', 'TupleType', 'UnicodeStringType', 'VERSION', 'WEB', '_E', '_ENDIAN', '_ImageCrop', '_MAPMODES', '_MODEINFO', '_MODE_CONV', '__builtins__', '__doc__', '__file__', '__name__', '_conv_type_shape', '_fromarray_typemap', '_getdecoder', '_getencoder', '_getscaleoffset', '_imaging_not_installed', '_initialized', '_show', '_showxv', '_wedge', 'blend', 'byteorder', 'composite', 'core', 'eval', 'fromarray', 'frombuffer', 'fromstring', 'getmodebandnames', 'getmodebands', 'getmodebase', 'getmodetype', 'init', 'isDirectory', 'isImageType', 'isNumberType', 'isSequenceType', 'isStringType', 'isTupleType', 'merge', 'new', 'open', 'os', 'preinit', 'register_extension', 'register_mime', 'register_open', 'register_save', 'string', 'sys', 'v', 'warnings']
>>>

Update 14/11/11: If you’re on 10.7 (Lion)

This recipy won’t work anymore on Lion because of the reasons pointed out in this stack-overflow article:

Xcode 4.1 on OS X Lion 10.7 no longer includes gcc-4.0 as it did in earlier versions of OS X. When you install a Python package like PIL that includes a C extension module, Python’s Distutils will attempt to use the same version of the C compiler that that Python itself was build with.

Too bad. It’s very easy to circumvent the problem.. just download PIL, start the stack as you would normally (./use_djangostack) and manually install the PIL package with python setup.py install.

Warning: this will work, but you’ll be able to use only some of the functionalities PIL offers. E.g.:

>>> import Image
# works just fine
>>> import _imaging
dlopen("/Applications/djangostack-1.3-0/python/lib/python2.6/site-packages/PIL/_imaging.so", 2);
Traceback (most recent call last):
  File "", line 1, in 
ImportError: dlopen(/Applications/djangostack-1.3-0/python/lib/python2.6/site-packages/PIL/_imaging.so, 2): no suitable image found.  Did find:
	/Applications/djangostack-1.3-0/python/lib/python2.6/site-packages/PIL/_imaging.so: mach-o, but wrong architecture

I order to understand what’s going on, you should remember that the PIL library consists of two main parts: a number of Python modules, usually stored in a PIL subdirectory, and a binary extension module called _imaging. Depending on platform and version, the latter is stored in a file named _imaging.pyd, _imaging.dll or _imaging.so (more info on all of this can be found here).

The error we got (“_imaging C module is not installed“) is caused by the fact that Lion uses a different C compiler than the one used for building the python libraries in your Djangostack. That had a cascade effect on the C-imaging libraries installed by PIL (for the reason mentioned above), which, as a result, can’t be run by Lion, and thus need to be updated.

The quick and dirty fix I used is this one: I installed again PIL outside the djangostack, and then copied over the newly generate C files back inside the stack. In other words, I installed again PIL using the latest C compiler that comes by default with Lion, and copied over only what I needed (the C libraries) into the stack.

That is: install PIL system-wide via the usual easy_install PIL. This will install the package in /Library/Python/2.7/site-packages/PIL-1.1.7-py2.7-macosx-10.7-intel.egg/. Then grab the files you need from there (e.g. _imaging.so, _imagingmath.so, _imagingtk.so) and put them into the djangostack python folder, which will be something like this: /Applications/djangostack-1.3-0/python/lib/python2.6/site-packages/PIL (obviously this location varies depending on where you originally installed djangostack).

That’s the end. It’s a dirty trick, but it worked for me!

References:

  • Installing the Python Imaging Library on Mac OS X Leopard
  • Installing PIL on Mac OS X Leopard virtualenv with easy_install
  • The GNU compiler collection on mac osX
  • -Wno-long-double discussion on google groups
  • MAC OSX Python build issues /w PIL (Imaging-1.1.7)
  • libjpeg and Python Imaging (PIL) on Snow Leopard
  • Xcode gcc exit status 1
  •  

    Share/Bookmark






    4 Responses to “Installing PIL on Djangostack 1.1.1/1.2/1.3”

    Thanks, you’ve made my day!

    Same problem with bitnami + lion + PIL. The trick also worked for me :)

    Javier Muñoz added these pithy words on Dec 13 11 at 9:03 am

    no problem – glad it helped!

    mike added these pithy words on Dec 28 11 at 12:40 pm

    Hi,

    Thanks for putting this article together. Here at BitNami we have followed these steps, to try and figure out how to avoid these issues when trying to install PIL to the BitNami users. I’d like to share a few comments:

    * The problem: missing gcc compiler (Mac OS X 10.6)

    The issue is not really that it is trying to use an older compiler. The problem is that some macros are not defined when compiling with the new compiler. As you mention, a possible solution is to use an old compiler.

    * _imaging.so: mach-o, but wrong architecture (Mac OS X 10.7)

    As the message states, the problem is the wrong architecture of the library. It is not related to a wrong compiler version but that by default the library has been compiled for a 64 bits architecture. The current version of Python in BitNami Django stack is 32 bits and therefore it requires the libraries to be compiled for that platform.

    The error can be avoided by setting the ARCHFLAGS environment
    variable before installing PIL.

    export ARCHFLAGS=”-arch i386″

    And then installing PIL from source (using python setup.py install, not with easy_install).

    Also when you need to compile a module on top of the BitNami DjangoStack and you want to link it to the libraries included in the stack instead of the system libraries you should first load the BitNami environment. To do so execute the following:

    . /scripts/setenv.sh <– notice the space between the dot and the path to the setenv.sh scripts.

    In any case I'm glad of letting you know that we have released a new version of the BitNami DjangoStack that already includes PIL (only for Linux and Mac OS X) so the users don't need to workaround the installation. Thanks again for taking the time to write the guide, it made realize the issue and was a great help to fix it.

    Best regards,

    Victoria.

    kaysa added these pithy words on Jan 31 12 at 10:20 am

    Thanks Victoria, that’s highly informative and clear. When it comes to compiler issues and the like, I don’t really have a solid understanding of things so I end up opting for a trial-and-error approach… and I suppose that’s why I like djangostack: it lets me focus on the things I do know.
    About the new DjangoStack: great news! definitely looking forward to try it out.

    mike added these pithy words on Jan 31 12 at 11:27 am