Installing Python Imaging Library (PIL) on Snow Leopard with updated Python 2.6.2 Installing Python Imaging Library (PIL) on Snow Leopard with updated Python 2.6.2 python python

Installing Python Imaging Library (PIL) on Snow Leopard with updated Python 2.6.2


The problem I ran into was that PIL was being compiled against PowerPC architecture (-arch ppc).

Do this before setup/build/compile:

export ARCHFLAGS="-arch i386"

(Assuming you're on i386)


The python.org Python was built with an earlier gcc. Try using gcc-4.0 instead of SL's default of 4.2:

export CC=/usr/bin/gcc-4.0

See similar problem here.

That gets past the stdarg problem. You may then run into later build problems with various dependent libraries.

BTW, gcc-4.0 and gcc-4.2 are both included with Snow Leopard's Xcode 3 so no additional installs are needed.

UPDATED 2011-05: Note, that the newer Xcode 4, released for experimental use with 10.6 and expected to be standard with 10.7, no longer includes PPC support so, if you install Xcode 4, this suggestion will not work. Options include using the newer 64-bit/32-bin Python 2.7.x installers from python.org or installing a newer Python 2.6 and PIL and the various 3rd-party libs using MacPorts, Homebrew, or Fink.


Modified Answer

Here are the steps that I took to successfully install PIL on Mac OS X 10.6 (without using MacPorts or Fink).

  1. Install readline

    cd ~/srccurl -O ftp://ftp.cwru.edu/pub/bash/readline-6.0.tar.gztar -xvzf readline-6.0.tar.gzcd readline-6.0./configure  make  sudo make install
  2. Install gbdm

    cd ~/srccurl -O ftp://mirror.anl.gov/pub/gnu/gdbm/gdbm-1.8.3.tar.gztar -xvzf gbdm-1.8.3.tar.gzcd gdbm-1.8.3# Need to modify Makefile.inperl -pi -e 's/BINOWN = bin/BINOWN = root/' Makefile.inperl -pi -e 's/BINGRP = bin/BINGRP = wheel/' Makefile.in./configuremakesudo make install
  3. Compile the latest Python 2.6.2+ from the Mercurial Repo

    cd ~/developmenthg clone http://code.python.org/hg/branches/release2.6-maint/ python-release2.6-maint.hgcd python-release2.6-main.hg./configure --enable-framework MACOSX_DEPLOYMENT_TARGET=10.6makesudo make frameworkinstall

    Note: I did receive the following errors after running make. However, I continued on as I wasn't worried about missing these modules, and I was able to successfully install PIL.

    Failed to find the necessary bits to build these modules:_bsddb             dl                 imageop         linuxaudiodev      ossaudiodev        spwd            sunaudiodev                                           To find the necessary bits, look in setup.py in detect_modules() for the module's name.Failed to build these modules:Nav                                                   running build_scripts
  4. Update .bash_profile for the new Python 2.6.2+ and for virtualenvwrapper

    # Set PATH for MacPython 2.6 if Python2.6 is installedif [ -x /Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 ]; then    PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:${PATH}"    export PATHfi# MDR April 23, 2009: Added for virtualenvwrapperif [ -x   /Library/Frameworks/Python.framework/Versions/2.6/bin/virtualenvwrapper_bashrc ]; then    export WORKON_HOME=$HOME/.virtualenvs    export PIP_VIRTUALENV_BASE=$WORKON_HOME    source /Library/Frameworks/Python.framework/Versions/2.6/bin/virtualenvwrapper_bashrcfi
  5. Install easy_install, pip, virtualenv, and virtualenvwrapper for Python 2.6.2+

    curl -O http://peak.telecommunity.com/dist/ez_setup.pysudo python ez_setup.pysudo easy_install pipsudo easy_install virtualenvsudo easy_install virtualenvwrapper
  6. Create a virtualenv and then use pip to install PIL

    mkvirtualenv pil-testcdvirtualenveasy_install pippip install http://effbot.org/downloads/Imaging-1.1.6.tar.gz

Note: I was not able to install PIL using pip install pil, so I installed from the URL as shown above.

Original Answer

From what I can see in your pip-log.txt file it appears that you installed Python 2.6.2 using the Mac Installer Disk Image from Python.org released on April 16, 2009. Can you confirm this?

From the pip log, gcc failed with exit status 1. The offending gcc command from your pip log is as follows:

gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3 -DHAVE_LIBJPEG -DHAVE_LIBZ -I/System/Library/Frameworks/Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/Headers -IlibImaging -I/Library/Frameworks/Python.framework/Versions/2.6/include -I/usr/local/include -I/usr/include -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c _imaging.c -o build/temp.macosx-10.3-fat-2.6/_imaging.o

This appears to be a problem related to Snow Leopard changing the default value for the -arch flag from i386 to x86-64 according to Ronald Oussoren in Message 92083 of Python Issue 6802. There is a patch available Python 2.6.2, but it has not been integrated into the Mac Installer Disk Image.

Your best solution that doesn't involve MacPorts or Fink would probably be to compile and install Python from the 2.6 release branch from either the Mercurial Python Repository or the Subversion Python Repository. According to Message 92315 of Issue 6802, Ronald Oussoren fixed this in Revision r74686.

I've been seeing similar errors using Python 2.6.2 installed from the Mac Disk Image while trying to then install Fabric in a virtualenv, so I plan to compile and install from the 2.6 release maintenance branch. If you want, I'll update when successful.