Skip to content

Instantly share code, notes, and snippets.

@shimizukawa
Last active October 4, 2015 21:08
Show Gist options
  • Save shimizukawa/2700183 to your computer and use it in GitHub Desktop.
Save shimizukawa/2700183 to your computer and use it in GitHub Desktop.
PIL (Pillow) のビルド手順。書きかけ

PILをWindowsでビルドする(32bit編)

Windows版のPILをビルドするには、いくつかの外部ライブラリを用意する必要が有りますが、各外部ライブラリのWindows向け静的リンク版は提供されていないことが多いので、これらも自分でビルドします。また、PILは最終的にPythonからロードされるため、コンパイラは利用するPythonをビルドしたものと同じにしておく必要があります。

使用したライブラリ・バージョン等

今回コンパイルの対象としたPILは以下のバージョンです。

PIL:1.1.7 for Python 2.4
PIL:1.1.7 for Python 2.5
PIL:1.1.7 for Python 2.6
PIL:1.1.7 for Python 2.7

Python for Windows の各バージョンと対応するコンパイラのバージョンは以下の通りです。

Python-2.4(32bit):VisualStudio 7.1 (1310)
Python-2.5(32bit):VisualStudio 7.1 (1310)
Python-2.6(32bit):VisualStudio 2008 (1500)
Python-2.7(32bit):VisualStudio 2008 (1500)

VisualStudio 7.1 は製品版を使用するか、VisualStudio 2003 Toolkit とxxxを用いた無償環境を用意(手順: xxx)する必要があります。VisualStudio 2008 はVisualC++ 2008 Express版(無償)を用意します。

外部ライブラリとして以下を用意します。リンクに src と書いているものはライブラリが提供されていないため自分でビルドして.libを作る必要があります。

freetype2:2.4.6 src (VC7, VC2008 両用)
jpeg6b:6b 27-Mar-1998 lib (VC7用), lib (VC2008用)
LittleCMS:1.19 `src`_
tcl:8.5.10 `src`_
tk:8.5.10 `src`_
zlib:1.2.4 `vc7lib`_, `vc2008lib`_

Python-2.7 でのビルド手順

ここでは各種組み合わせを代表して、Python-2.7(32bit)向けのPILビルド手順を記載します。なお、ビルドを行った環境は Windows 7 (64bit) ですが、対象となるPythonは32bit版です。

freetype のビルド

ft246.zipを展開して、 buildswin32vc2008freetype.sln をVC2008で開きます。構成 LIB Release, プラットフォーム Win32 を選択してビルドすればライブラリは完成です。

なお、VC2008でビルドしたものをVC7用にもそのまま使えました。

作成したlibは objswin32vc2008freetype246.lib として生成されるので、このファイルを freetype.lib にリネームしておきます。

これを C:Libfreetype 以下に lib と include を配置して置いてください:

C:\Lib\freetype
   +-- lib\freetype.lib
   +-- include\*.h

jpeg6b ライブラリ

前述のリンクから jpeg6-vnet.zip または jpeg6b-vs2008.zip を入手すればビルド済みライブラリが手に入ります。

これを展開して C:Libjpeg6 以下に lib と include を配置して置いてください:

C:\Lib\jpeg6
   +-- lib\libjpeg.lib
   +-- include\*.h

LittleCMS のビルド

"Little CMSは1系と2系が存在していますが、PILで必要とされているのは1系のようです。"

tcl/tk のビルド

  • Visual Studio 2008 コマンド プロンプト 起動
  • cd C:libtcl8.5.10win
  • nmake -f makefile.vc
  • cd C:libtk8.5.10win
  • set TCLLIB=C:libtcl8.5.10
  • nmake -f makefile.vc

zlib のビルド

PIL のビルド

  • setup.cfg 作成&書き換え:

    [build_ext]
    library_dirs = C:\lib\zlib124lib;C:\lib\jpeg6b-vs2008\lib;C:\lib\freetype-2.4.6\lib;C:\lib\lcms-1.19\Lib\MS;C:\lib\tcl8.5.10\win\Release_VC9;C:\lib\tk8.5.10\win\Release_VC9
    include_dirs = C:\lib\zlib124lib;C:\lib\jpeg6b-vs2008\include;C:\lib\freetype-2.4.6\include;C:\lib\lcms-1.19\include;C:\lib\tcl8.5.10\generic;C:\lib\tk8.5.10\generic;C:\lib\tk8.5.10\xlib
    
  • ビルド:

    python-2.7 -S setup.py build_ext -i build

  • 動作確認:

    python-2.7 -S selftest

  • Windowsインストーラ作成:

    python-2.7 -S setup.py bdist_wininst

selftest

python setup.py build_ext -i

インプレイスでビルドする -> テスト可能となる -> その状態でbdist_wininst / bdist_egg等するとはまる

selftest内のモジュール検索パスを変更しないとbuildでsupportと言ってるのにselftestではnot-supportになってしまう

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment