Tkinterのリビルド手順の備忘録メモ

Tkinterを改造/リビルド/インストール(手動)する手順の備忘録メモです。

必要なもの

  1. Visual C++ 2008 Express Edition
  2. Python 2.7.2 + setuptools
  3. Python 2.7.2のソースコード
  4. Tcl/Tk 8.5.11のソースコード [*1]

[*1]Tcl/Tkを既にインストールしているならば、そのインストール・フォルダの下にあるincludeフォルダのファイルを利用しても良い。

STEP1 作業フォルダを作る

ビルド用の作業フォルダを作ります。ここではworkという名前のフォルダを作りました。このworkの中にさらに_tkinterという名前のフォルダを作ります。ビルドはこの_tkinterのなかで行います。

STEP2ソースコードを入手する

Python-2.7.2とtcl/tk-8.5.11のソースを下記からダウンロードし、それぞれをworkの中に解凍します。

Python-2.7.2:
  http://python.org/ftp/python/2.7.2/Python-2.7.2.tgz
tcl-8.5.11
  http://prdownloads.sourceforge.net/tcl/tcl8511-src.zip
tk-8.5.11
  http://prdownloads.sourceforge.net/tcl/tk8511-src.zip

解凍すると下記のフォルダができます。

work\Python-2.7.2
work\tcl8.5.11
work\tk8.5.111

STEP3 ビルドに必要なファイルを集める

STEP2で得たPython、tcl/tkのそれぞれのフォルダから、_tkinterをビルドする為に必要なファイルをコピーし、_tkinterフォルダに集めます。必要なファイルは下記の2つです。

work\Python-2.7.2\Modules\_tkinter.c
work\Python-2.7.2\Modules\tkinter.h

STEP4 ビルドスクリプトを作成する

ビルドを行うための setup.pyとバッチファイルdistutil_vc6.batを作成します。

setup.py

from distutils.core import setup, Extension

module1 = Extension(
    '_tkinter',
    include_dirs = [
        '../tcl8.5.11/generic',
        '../tk8.5.11/generic',
        '../tk8.5.11/xlib'
    ],
    libraries = ['tcl85', 'tk85'],
    library_dirs = ['C:/DevelopTools/Python/tcl'], ← Pythonインストールフォルダ
    sources=[ '_tkinter.c'],
)

setup(
    name         = '_tkinter',
    version      = '1.0',
    author       = 'shozo fukuda',
    ext_modules  = [module1],
)

distutil_vc6.bat

set DISTUTILS_USE_SDK=1
set MSSDK=1
setup.py bdist_wininst

STEP5 Tkinterの改造

ソースコード_tkinter.cに改造を加える。

STEP6 ビルド/インストールする

バッチファイルdistutil_vc6.batを実行します。ビルドでできた

work\_tkinter\build\lib.win32-2.7\_tkinter.pyd

で、Pythonのインストール・フォルダ下のDLLs\_tkinter.pydを置き換えます。

(以上)