41
votes

I've tried googling & looking up some other people's questions. However, I still couldn't find a clear/simple recipe to install PIL (for python 2.6 or 2.7) on mac os x 10.7.2 Lion.

9
The accepted answer does not work in my OS X El Capitan 10.11.4. I opened a new thread about this here apple.stackexchange.com/q/233405/15504Léo Léopold Hertz 준영

9 Answers

87
votes

If you use homebrew, you can install the PIL with just brew install pil. You may then need to add the install directory ($(brew --prefix)/lib/python2.7/site-packages) to your PYTHONPATH, or add the location of PIL directory itself in a file called PIL.pth file in any of your site-packages directories, with the contents:

/usr/local/lib/python2.7/site-packages/PIL

(assuming brew --prefix is /usr/local).

Alternatively, you can just download/build/install it from source:

# download
curl -O -L http://effbot.org/media/downloads/Imaging-1.1.7.tar.gz
# extract
tar -xzf Imaging-1.1.7.tar.gz
cd Imaging-1.1.7
# build and install
python setup.py build
sudo python setup.py install
# or install it for just you without requiring admin permissions:
# python setup.py install --user

I ran the above just now (on OSX 10.7.2, with XCode 4.2.1 and System Python 2.7.1) and it built just fine, though there is a possibility that something in my environment is non-default.

25
votes

This is something I wrote for the folks at work. It's a full workup for getting a clean OSX Lion working virtualenv using django + git + some other stuff:

https://gist.github.com/1781374

The most important lines for you are:

Install libjpeg (PIL req)

curl -O http://www.ijg.org/files/jpegsrc.v8c.tar.gz
tar -xvzf jpegsrc.v8c.tar.gz
cd jpeg-8c
./configure
make
sudo make install
cd ../

Install freetype (more PIL requirements)

curl -O http://ftp.igh.cnrs.fr/pub/nongnu/freetype/freetype-2.4.5.tar.gz
tar -xvzf freetype-2.4.5.tar.gz
cd freetype-2.4.5
./configure
make
sudo make install
cd ../

Install PIL (usually in the requirements.txt so I don't have it in the above linked instruction)

pip install PIL

or some folks have to (not sure what the configuration difference that causes this is):

sudo pip install PIL

EDIT:

ALSO note that with LION command line tools aren't installed by default, you have to manually enable them, open XCode got to preferences then downloads and select command line tools to be installed before you can compile anything (noted at the top of my GIST)

12
votes

One way is via Macports

Install the base macports as per the installation guide

Then install the py27-pil port by port install py27-pil

You will then need to use the python installed by macports by using port select --set python python27

I find it easier to use a package manager like macports (or fink or homebrew) when you require C libraries to be installed as well as python code.

7
votes

Works for me ( OS X Yosemite 10.10.2 - Python 2.7.9 ) :

xcode-select --install
sudo pip install pillow

Try this to check it:

from PIL import Image
image = Image.open("file.jpg")
image.show()

Can't install PIL after Mac OS X 10.9

3
votes

u may try this in terminal:

  • sudo easy_install pip
  • sudo pip install pil
3
votes

http://rudix.org provides hassle free installation for lots of precompiled unix packages including pil and pillow. After I tried every single answer on StackOverflow, the only thing that ended up working was this (I wish I had found them before I tried everything else). http://rudix.org/packages/pil.html and http://rudix.org/packages/pillow.html

1
votes

On Mac OS X, if you prefer to install PIL using pip inside a virtualenv, then you might have to make PIL use Mac's builtin freetypes by running:

$ ln -s /usr/X11/include/freetype2 /usr/local/include/
$ ln -s /usr/X11/include/ft2build.h /usr/local/include/
$ ln -s /usr/X11/lib/libfreetype.6.dylib /usr/local/lib/
$ ln -s /usr/X11/lib/libfreetype.6.dylib /usr/local/lib/libfreetype.dylib
$ pip install PIL
1
votes
0
votes

I was trying to execute a Python script with administrative privileges in a Mac (running on Lion) and looking at this post I found out that all I needed to do was launch Python with Administrative privileges by using the "sudo" command in the Terminal.

Like that: "sudo Python" and then executing the script.

I know it is pretty basic but it was exactly what I needed to get my script working...