0

アプリの py2exe バージョンの作成に取り組んでいます。Py2exe は一部のモジュールのコピーに失敗します。元のアプリは.pngファイルを正常にロードしますが、exe バージョンはロードしません:

Traceback (most recent call last):
  File "app.py", line 1, in <module>
    from gui.main import run
  File "gui\main.pyc", line 14, in <module>

  File "gui\controllers.pyc", line 10, in <module>

  File "gui\utils\images.pyc", line 78, in <module>
    ☺
  File "gui\utils\images.pyc", line 70, in GTK_get_pixbuf
    ☺§☺▲☻
  File "gui\utils\images.pyc", line 38, in PIL_to_pixbuf

gobject.GError: Image type 'png' is not supported

py2exeに何を強制的に含める必要があるか考えていますか?

4

3 に答える 3

4

これはPILpy2exeの既知の問題です。

PIL (python image library) は、py2exe が認識しないプラグインを動的にインポートするため、プラグインを .exe ファイルに含めません。

修正 (できれば!) は、.py ファイルの 1 つに、このようにドライバーを明示的にインポートすることです。

import Image
import PngImagePlugin
Image._initialized=2

これは、py2exe に確実にプラグインが含まれることを意味します。このImage._initializedビットは、他のプラグインの PIL スキャンを停止します。

これは、これを完全に説明している py2exe wikiのドキュメントです。

于 2009-10-02T22:06:56.153 に答える
2

アプリケーションをインストールするときは、必ずローダーをバンドルしてください。Py2exe はこれらについて知りませんが、これらは GTK の必要な部分であり、残りの GTK の「データ」ファイルが存在する場所に存在します。

http://unpythonic.blogspot.com/2007/07/pygtk-py2exe-and-inno-setup-for-single.htmlから

パッケージ化のために py2exe に GTK DLL をプルさせるだけでは十分ではありません (これはかなりうまくいきます)。GTK には、テーマや翻訳などを含む多数のデータ ファイルも必要です。アプリケーションが実行時にそれらを見つけられるように、これらを手動で dist ディレクトリにコピーする必要があります。

GTK ランタイム ディレクトリ (通常は c:\GTK など) の中を見ると、次のディレクトリが見つかります: share など、lib. py2exe を実行した後、これらすべてを dist ディレクトリにコピーする必要があります。

著作権は保持されます。

于 2009-10-16T18:24:36.093 に答える
2

これは何のプラットフォームですか?最近、Windowsでのpngサポートが改善されたと思うので、使用しているpygtkのバージョンも適切です。 http://aruiz.typepad.com/siliconisland/2008/02/goodbye-zlib-li.html

于 2009-10-02T21:38:45.070 に答える