OSX Mavericks環境でblockdiagをインストールしようと思い、pipを使ってPillowをそのままインストールするとPNGサポートが無効なままの様である。これを解決したのでインストールメモ。
具体的には、blockdiagなどでPNGを書き出す時に
$ blockdiag sample.diag
ERROR: encoder zip not available
…という風にエラーになってしまう。これはPillowのPNGサポートが無効な状態でビルドされていることが原因のようである。こんな感じでインストール中表示されたらPNG出力ができない:
$ pip install Pillow
(略)
——————————————————————–
PIL SETUP SUMMARY
——————————————————————–
version Pillow 2.4.0
platform darwin 2.7.7 (default, Jun 14 2014, 23:12:13)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)]
——————————————————————–
— TKINTER support available
— JPEG support available
*** OPENJPEG (JPEG2000) support not available
*** ZLIB (PNG/ZIP) support not available
— LIBTIFF support available
— FREETYPE2 support available
*** LITTLECMS2 support not available
*** WEBP support not available
*** WEBPMUX support not available
——————————————————————–
※ちなみにPillowというのはPILのフォークであって、本家のPILの開発が終了しているためにforkされたプロジェクトみたい。
PNGサポートを有効にするためには、Pillowのsetup.pyが/usr/local/include/配下のzlib.hを探しに行くので、ここにシンボリックリンクを貼ってあげれば良い。これはXcodeの中にあるzlib.hをリンクして上げるのが良いみたい。
ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/zlib.h /usr/local/include/
http://stackoverflow.com/questions/19532125/cant-install-pil-after-mac-os-x-10-9
リンクしたあと、もし既にPillowがインストール済みであれば一度アンインストール
$ pip uninstall Pillow
アンインストールできたら再インストール
$pip install Pillow
(略)
——————————————————————–
PIL SETUP SUMMARY
——————————————————————–
version Pillow 2.4.0
platform darwin 2.7.7 (default, Jun 14 2014, 23:12:13)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)]
——————————————————————–
— TKINTER support available
— JPEG support available
*** OPENJPEG (JPEG2000) support not available
— ZLIB (PNG/ZIP) support available
— LIBTIFF support available
— FREETYPE2 support available
*** LITTLECMS2 support not available
*** WEBP support not available
*** WEBPMUX support not available
——————————————————————–
このようにZLIB(PNG/ZIP) support availableと出れば良い。 このあとたとえばblockdiagをインストールするには
$ pip install blockdiag
してあげれば良い。
(追記)
Pillowをインストールするには freetype2が入っている必要があるかも知れない。これはHomebrewからfreetypeをインストールすることで問題なさそうだった。
$ brew info freetype
freetype: stable 2.5.3 (bottled)
http://www.freetype.org
/usr/local/Cellar/freetype/2.5.0.1 (59 files, 2.6M)
Poured from bottle
/usr/local/Cellar/freetype/2.5.3_1 (60 files, 2.6M) *
Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/freetype.rb
==> Dependencies
Required: libpng ✔==> Options
–universal
Build a universal binary
–without-subpixel
Disable sub-pixel rendering (a.k.a. LCD rendering, or ClearType)
zlibもHomebrewにFormulaがあったけどこれをリンクしたらなぜかPillowインストール時にエラーになった。
(追記)
Homebrewからzlib.hとzconf.hの両方をリンクしたらPillowがインストールできた。Xcodeの場合はzlib.hだけで大丈夫だったのがなんでかは謎。Xcodeに入ってたのは1.2.5でHomebrewが1.2.8だった。
$ ln -s /usr/local/opt/zlib/include/zlib.h /usr/local/include/
$ ln -s /usr/local/opt/zlib/include/zconf.h /usr/local/include/
(追記)
Homebrewを使うなら、Homebrew/pythonからPillowを入れれば良いらしい。これはXcode.appパッケージの中のzlib.hを指定してZLIBサポートが有効な状態でインストールしてくれるみたい。
$ brew tap Homebrew/python
$ brew install pillow
Leave a Reply