PythonのPILをMacOS Xでつかったときに怒られる。

先日Pycon mini JPにいった時に、blockdiagというナイスなソフトを知りました。

ので使ってみようと思い、pipからインストールすると怒られます。

reki$:pip install blockdiag
(略)
reki$: blockdiag -o test.png test.diag
Traceback (most recent call last):
  File "/usr/local/bin/blockdiag", line 8, in <module>
    load_entry_point('blockdiag==0.6.6', 'console_scripts', 'blockdiag')()
  File "/Library/Python/2.6/site-packages/blockdiag/blockdiag.py", line 421, in main
    draw.draw()
  File "/Library/Python/2.6/site-packages/blockdiag/DiagramDraw.py", line 96, in draw
    self.node(node, **kwargs)
  File "/Library/Python/2.6/site-packages/blockdiag/DiagramDraw.py", line 204, in node
    font=self.font, badgeFill=self.badgeFill)
  File "/Library/Python/2.6/site-packages/blockdiag/noderenderer/box.py", line 24, in render_node
    lineSpacing=metrix.lineSpacing)
  File "/Library/Python/2.6/site-packages/blockdiag/ImageDrawEx.py", line 264, in textarea
    lines = TextFolder(box, string, scale=self.scale_ratio, **kwargs)
  File "/Library/Python/2.6/site-packages/blockdiag/utils/PILTextFolder.py", line 14, in __init__
    self.ttfont = ImageFont.truetype(font, fontsize)
  File "/Library/Python/2.6/site-packages/PIL/ImageFont.py", line 218, in truetype
    return FreeTypeFont(filename, size, index, encoding)
  File "/Library/Python/2.6/site-packages/PIL/ImageFont.py", line 134, in __init__
    self.font = core.getfont(file, size, index, encoding)
  File "/Library/Python/2.6/site-packages/PIL/ImageFont.py", line 34, in __getattr__
    raise ImportError("The _imagingft C module is not installed")
ImportError: The _imagingft C module is not installed

しらべると、PIL(Python Image Library)の1.1.6をいれるといいらしいのでいれてみる

reki:$pip uninstall pil
reki:$pip install pil==1.1.6
 Could not find a version that satisfies the requirement pil==1.1.6 (from versions: )
No distributions matching the version for pil==1.1.6
Storing complete log in /Users/marth/.pip/pip.log

ないっていわれたのでこまった。
Windowsだとバイナリーエディターとか荒技つかうんだけど、Macなので情報なし。

でもいっかいPILをいれてみると……

    --------------------------------------------------------------------
    PIL 1.1.7 SETUP SUMMARY
    --------------------------------------------------------------------
    version       1.1.7
    platform      darwin 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
                  [GCC 4.2.1 (Apple Inc. build 5646)]
    --------------------------------------------------------------------
    --- TKINTER support available
    *** JPEG support not available
    --- ZLIB (PNG/ZIP) support available
    *** FREETYPE2 support not available
    *** LITTLECMS support not available
    --------------------------------------------------------------------
    To add a missing option, make sure you have the required
    library, and set the corresponding ROOT variable in the
    setup.py script.

FREETYPE2がサポートされていない!!これが原因だ!!!

というわけでhomebrewでいれてみると(MacPorts嫌い)

reki$brew install freetype2
Error: No available formula for freetype2

ないっていわれたよ(´Д`;)

でしょうがないのでつくったw

https://github.com/yuuna/homebrew/blob/freetype/Library/Formula/freetype2.rb

require 'formula'

class Freetype2 <Formula
  url 'http://sourceforge.net/projects/freetype/files/freetype2/2.4.4/freetype-2.4.4.tar.gz/download'
  homepage 'http://freetype.sourceforge.net/index2.html'
  md5 '9273efacffb683483e58a9e113efae9f'
  version '2.4.4'

  # depends_on 'cmake'

  def install
    system "./configure", "--disable-debug", "--disable-dependency-tracking",
                          "--prefix=#{prefix}"
    # system "cmake . #{std_cmake_parameters}"
    system "make install"
  end
end

これを/usr/local/Library/Formula/にいれてFreetypeをいれてpipから再度インストール(pullリクエストおくってるのでそのうちmergeされるかも)

reki:$ sudo brew install freetype2
==> Downloading http://sourceforge.net/projects/freetype/files/freetype2/2.4.4/freetype-2.4.4.tar.gz/download
######################################################################## 100.0%
==> ./configure --disable-debug --disable-dependency-tracking --prefix=/usr/local/Cellar/freetype2/2.4.4
==> make install
/usr/local/Cellar/freetype2/2.4.4: 54 files, 2.5M, built in 16 seconds
reki:$ pip install pil

さすがMacProはやいっ、じゃなくて。
ログの最後をみると

    --------------------------------------------------------------------
    PIL 1.1.7 SETUP SUMMARY
    --------------------------------------------------------------------
    version       1.1.7
    platform      darwin 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
                  [GCC 4.2.1 (Apple Inc. build 5646)]
    --------------------------------------------------------------------
    --- TKINTER support available
    *** JPEG support not available
    --- ZLIB (PNG/ZIP) support available
    --- FREETYPE2 support available
    *** LITTLECMS support not available
    --------------------------------------------------------------------
    To add a missing option, make sure you have the required
    library, and set the corresponding ROOT variable in the
    setup.py script.

無事サポートされたみたい。

というわけで無事うごきました。
よくみるとjpegもサポートされていなかったのでlibjpegをいれて再度いれなおしました。

やっぱりhomebrewだね、homebrewヽ(´ー`)ノ