はてブロ@ama_ch

https://twitter.com/ama_ch

MacにPython Imaging Library (PIL)をインストールする

なんだかよくわからないうちに終わってしまったんだけど、一応動くようなのでメモ。
Python Challenge のLevel7はPILが必要らしいので、MacPortsでインストールしてみました。


まず、PILがあるかどうか探します。

$ port search pil
icompile                       devel/icompile 0.4          icompile is an autocompile tool for C++ projects
jpilot                         palm/jpilot    0.99.9       A Palm Pilot desktop for Unix
pilot-link                     palm/pilot-link 0.12.2       palm-pilot libraries and tools
pilrc                          palm/pilrc     3.1          Palm OS resource compiler
py-pil                         python/py-pil  1.1.6        Python Imaging Library
py25-pil                       python/py25-pil 1.1.6        Python Imaging Library
sword-book-pilgrim             textproc/sword-book-pilgrim 0.3          The Pilgrim's Progress by John Bunyan (1628-1688)

2個見つかりましたね。今回はpy25-pilをインストールしてみます。

$ sudo port install py25-pil
--->  Fetching freetype
--->  Attempting to fetch freetype-2.3.7.tar.bz2 from http://download.savannah.gnu.org/releases/freetype/
--->  Verifying checksum(s) for freetype
--->  Extracting freetype
--->  Applying patches to freetype
--->  Configuring freetype
--->  Building freetype with target all
--->  Staging freetype into destroot
--->  Installing freetype 2.3.7_0
--->  Activating freetype 2.3.7_0
--->  Cleaning freetype
--->  Fetching jpeg
--->  Attempting to fetch jpegsrc.v6b.tar.gz from http://www.ijg.org/files
--->  Attempting to fetch droppatch.tar.gz from http://sylvana.net/jpegcrop/
--->  Verifying checksum(s) for jpeg
--->  Extracting jpeg
--->  Applying patches to jpeg
--->  Configuring jpeg
--->  Building jpeg with target all
--->  Staging jpeg into destroot
--->  Installing jpeg 6b_2
--->  Activating jpeg 6b_2
--->  Cleaning jpeg
--->  Fetching py25-pil
--->  Attempting to fetch Imaging-1.1.6.tar.gz from http://effbot.org/downloads/
--->  Verifying checksum(s) for py25-pil
--->  Extracting py25-pil
--->  Applying patches to py25-pil
--->  Configuring py25-pil
--->  Building py25-pil with target build
Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_python_py25-pil/work/Imaging-1.1.6" && /opt/local/bin/python2.5 setup.py build " returned error 1
Command output: copying PIL/PalmImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/PcdImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/PcfFontFile.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/PcxImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/PdfImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/PixarImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/PngImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/PpmImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/PsdImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/PSDraw.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/SgiImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/SpiderImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/SunImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/TarIO.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/TgaImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/TiffImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/TiffTags.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/WalImageFile.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/WmfImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/XbmImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/XpmImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
copying PIL/XVThumbImagePlugin.py -> build/lib.macosx-10.3-i386-2.5
running build_ext
--- using frameworks at /System/Library/Frameworks
building '_imaging' extension
creating build/temp.macosx-10.3-i386-2.5
creating build/temp.macosx-10.3-i386-2.5/libImaging
-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 -I/opt/local/include/freetype2 -IlibImaging -I/opt/local/include -I/opt/local/include/freetype2/ -I/usr/local/include -I/usr/include -I/opt/local/include/python2.5 -c _imaging.c -o build/temp.macosx-10.3-i386-2.5/_imaging.o
unable to execute -DNDEBUG: No such file or directory
error: command '-DNDEBUG' failed with exit status 1

Error: Status 1 encountered during processing.

あれ、エラーになった・・・とりあえずもう1回同じコマンドを打ってみます。

$ sudo port install py25-pil
--->  Building py25-pil with target build
--->  Staging py25-pil into destroot
--->  Installing py25-pil 1.1.6_0
--->  Activating py25-pil 1.1.6_0
--->  Cleaning py25-pil

んん、何も出ないで終わった。インストールできたのかな?
インストールしたフォルダがわからないので、Spotlightで「py25-pil」で検索。
/opt/local/var/macports/software/py25-pil
にあることがわかりました。
このフォルダを開くと、
/opt/local/var/macports/software/py25-pil/1.1.6_0/opt/local/lib/python2.5/site-packages/PIL
こんな感じになっています。
lib/python2.5/site-packages
このへんの構成はPythonのフォルダ構成と似ているので、site-packages/PILを
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages
にコピーします。


Pythonのインタラクティブシェルを起動して、インポートしてみます。

>>> import PIL
>>> import Image
>>> import PIL.Image
>>> import PIL.ImageFilter
>>> dir(PIL)
['Image', 'ImageFilter', 'ImageMode', 'ImagePalette', '__builtins__', '__doc__', '__file__', '__name__', '__path__', '_imaging']

んーちゃんと動いてるっぽいですね。なんか導入方法が色々間違ってる気がするけど、とりあえず使えてるみたいなのでよしとします。