試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Windows版PyGTKをWine環境にインストール

ここでは(テスト用途などで)Wine環境にWindows版PyGTKをインストールする作業を扱う。

  1. 必要なパッケージ
  2. Python
  3. GTK+
    1. GTK+のレジストリ
  4. PyGTK
  5. テスト

必要なパッケージ

PyGTKのパッケージにはGTK+Pythonは付属しないため、先にインストールしておく必要がある。
インストールするパッケージは下のようになる。

Python

PyGTK側で対象のPythonのバージョンが決まっているため、先にPyGTKの公式ページからファイル一覧のページへ飛んでファイル名を確認してからそのバージョンのPythonPython本体のダウンロードページから選択し、ダウンロード後インストールする。インストール先は標準のC:\Python[バージョン]\とする。

Windows版のPythonをWineで動かす」も参照。

GTK+

PyGTKのダウンロードページには「Glade/Gtk+ for Windows」プロジェクトのWindowsGTK+へのリンクがあり、インストーラを用いてGTK+をインストールすることができるのだが、Wineのバージョン1.1.14と1.1.15の時点ではインストールの途中で確実に失敗する(gtk-2.12.9-win32-2.exeで確認)。この問題については

bugs.winehq.org/show_bug.cgi?id=13394
に既にパッチがあるのでWineのソースを用いて修正版をビルドすることで回避することができる。このパッチはバージョン1.1.14と1.1.15の両方のソースツリーに対して正常に適用できることを確認済み。
(2015/1/8)この問題はWineのバージョン1.1.39で修正されている。
あるいは、GTK+の本家が配布しているWindows版パッケージを利用する。こちらはZIPファイルにまとめられているため、インストーラによるトラブルはないが、その代わりに手動でファイルをWine環境(のCドライブ内)へ配置することになる。「All-in-one bundle」のパッケージは開発パッケージも一緒に入ってしまうが手間はかからない。下にある「GTK+ individual packages」と「Third Party Dependencies」からパッケージを個別にダウンロードしてもOK。

GTK+レジストリ
GTK+本家サイトからZIPファイルをダウンロードして展開しただけではGTK+のDLLが利用できず、モジュールの初期化に失敗する(importできない)。
「Glade/Gtk+ for Windows」のインストーラを使用した場合に設定されたレジストリ項目をもとに以下のレジストリファイルを作成したので、これをWineレジストリエディタ(regedit)に読み込ませればOK(バージョン情報部分は実際のバージョンに合わせる・GTK+のインストール先はC:\GTKとする)。

REGEDIT4

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment]
"GTK_BASEPATH"="C:\\GTK"
"PATH"=hex(2):25,47,54,4b,5f,42,41,53,45,50,41,54,48,25,5c,62,69,6e,3b,43,3a,\
  5c,77,69,6e,64,6f,77,73,5c,73,79,73,74,65,6d,33,32,3b,43,3a,5c,77,69,6e,64,\
  6f,77,73,00

[HKEY_LOCAL_MACHINE\Software\GTK\2.0]
"DllPath"="C:\\GTK\\bin"
"Path"="C:\\GTK"
"VendorVersion"="x.x.x-x"
"Version"="x.x.x"

上半分の「hex(2)」のところの項目では「%GTK_BASEPATH%\bin;C:\windows\system32;C:\windows」をWine上のPATHに指定している。

PyGTK

PyGTKのページからダウンロードした

  • pygobject-[バージョン].win32-py[対象のPythonのバージョン].exe
  • pycairo-[バージョン].win32-py[対象のPythonのバージョン].exe
  • pygtk-[バージョン].win32-py[対象のPythonのバージョン].exe

のそれぞれをWineで実行してインストールする。
上記ファイルのバージョンによってはこのインストーラが動かないことがあるが、これらはunzipで展開できることが分かった。中身は以下となる。

テスト

ファイルの配置や設定が終了したら適当なスクリプトを下のようにして試す。

$ wine "C:\Python[バージョン]\python.exe" [スクリプトの場所]

使用したバージョン(組み合わせ)

  • Python 2.5.2 / GTK+ 2.12.9-win32-2 / PyGObject 2.14.1-1.win32-py2.5 / PyCairo 1.4.12-1.win32-py2.5 / PyGTK 2.12.1-2.win32-py2.5
  • Python 2.6.1 / GTK+ 2.14.7-20090119_win32 / PyGObject 2.14.2-2.win32-py2.6 / PyCairo 1.4.12-2.win32-py2.6 / PyGTK 2.12.1-3.win32-py2.6
  • Wine 1.1.14, 1.1.15