2010-12-10 3 views
-1

私はPythonでPyGTKを使ってGUIアプリケーションを書いており、Py2exeを使っている実行可能ファイルとして配布したいと思っています。私は私のプログラムを実行すると、私は次の警告py2exeのPyGTKプログラムで画像を表示

GdkPixbuf-WARNING **: Cannot open pixbuf loader module file 'gtk-2.0\gdk-pixbuf.loaders': No such file or directory 

と私の画像を取得dist\etc\gtk-2.0\gdk-pixbuf.loadersが存在するにもかかわらず、表示されません。

私のプログラムをWindowsのexeとしてパッケージ化して、これらの想像を使用するにはどうすればよいですか?

+0

わかりませんが、gtk-2.0をシステムにインストールする必要があると思われます。 http://www.gtk.org/download-windows.html –

+0

@Aaron、gtk-2.0がシステムにインストールされています。 –

答えて

0

あなたはpy2exeを使用している場合、あなたはexeファイルの同じレベルで、プロジェクト内のGTK +(など、共有、LIB)をパックする必要がありますに:

サンプルディレクトリ構造:

PROGRAM.exe 
LOT_OF_PYD_AND_LIB_FILES... 
etc 
etc\fonts 
etc\gtk-2.0 
etc\pango 
lib 
lib\gtk-2.0 
share 
share\aclocal 
share\glib-2.0 
share\locale 
share\themes 

あなたはありますかそのディレクトリ構造ですか?

+0

ほとんどのpy2exeアプリケーションではそれが必須条件だとは思いませんが、私はその構造に問題があり続けています。 –

0

プロジェクトのdistディレクトリにGTK +のビンなど、株式とlibディレクトリをコピーする標準の答えが正解である(しかし、私は誰かが荒らさた[1]を参照して ビンは、リストから欠落しています)、結局のところ:

  • PyGTKのは、PythonにGTK +を利用可能にする接着剤の薄層以上のものはありません
  • PyGObjectは、Python
  • へのGObject、GIO、...を利用可能にする接着剤の薄い層以外の何ものでもありません
  • PyCairoは、あなたがそれらのバインディングパッケージのすべての3を必要とし、基盤となるプラットフォームがない場合には、それらの 性質のために、彼らは役に立たない、最低限のPython

にカイロが利用可能糊作るの薄い層以外の何ものでもありません利用可能なファイル(.dllファイル、 構成ファイル、略:shebang全体)。そのため、GTK +の binなどの共有とlibをプロジェクトのdistディレクトリにコピーする必要があります。

私が2年前に[1]に投稿したsetup.pyの断片は、微妙に ですが、不完全です。正しいバージョンはされている必要があります。zipファイルdest_baseの値の

from distutils.core import setup 
import py2exe 

setup(
    name = 'handytool', 
    description = 'Some handy tool', 
    version = '2.0', 
    zipfile = 'bin/library.zip', 
    windows = [{'script': 'handytool.py', 
       'dest_base': 'bin/handytool'} 
       ], 

    options = {'py2exe': {'packages':'encodings', 
          'includes': 'glib, gio, gobject, cairo, atk, pango, pangocairo, gtk'} 
       } 
) 

をメモします。これらのオプションを使用すると、 .exe、.pydファイルとlibrary.zipの束がすべて py2exeのdist/binディレクトリに作成されます。 GTK +のディレクトリをpy2exeの distディレクトリにコピーすると、実行ファイルはlibgtk-win32-2.0.0.dllなどの のように表示されます。上記の操作を行わないと、PATH環境が正しく設定されていないために、 変数が互換性のない.dllファイルを妨害する可能性があります。 py2exe実行可能ファイルが読み込まれます。

上記の設定のため。PYファイル、DISTの正しいディレクトリ構造は 次のようになります。あなたが正しく動作上記を取得すると

bin/handytool.exe 
bin/library.zip 
bin/*.pyd (all .pyd files py2exe deemed needed) 
bin/* (complete copy of GTK+ runtime bin dir) 
etc/* (complete copy of GTK+ runtime etc dir) 
share/* (complete copy of GTK+ runtime share dir) 
lib/* (complete copy of GTK+ runtime lib dir) 

をあなただけの作品とあなたが の一部を除外について考え始めることができます そのロードイメージを検索しますシェア/(翻訳ファイルのように、あなたが/必要性を望んでいない)など

MVG、 ディーター

は、[1] http://www.py2exe.org/index.cgi/Py2exeAndPyGTK

編集2011/07/05:PyGObject 2.28/PyGTK 2.24のインクルードオプションが修正されました。 PyGObject 2.28のみを使用している場合、インクルードオプションには 'glib、gio、gobject'を含む が含まれています。 PyGTKを使用している場合は、 'glib、gio、gobject、cairo、atk、pango、pangocairo、gtk'が必要です。