2014年6月26日木曜日

OSX MavericksでPillowのPNGサポートを有効にする方法の要点だけ(blockdiagのインストール)

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/S‌​DKs/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 

0 件のコメント:

コメントを投稿