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