4

WindowsでPython3.1を実行していて、Cx_Freezeを介してPygameスクリプトを実行可能ファイルとして配布しようとしています。現在、exeビルドが私のイメージをロードできないことを除いては機能しているようです:

Cannot load image: C:\path\to\build\exe.win32-3.1\resources\image.png
File is not a Windows BMP file

グーグルは、SDLイメージングライブラリが正しく含まれていない場合にこれが発生することを明らかにしました。ただし、SDL_image.dll両方libpng12-0.dllともcx_Freezeによってビルドディレクトリに配置されるため、すべてが正常であるように見えます。PNG画像を読み込めないのはなぜですか?

編集:スクリプトをPython 2.6に移植し、代わりにpy2exeを使用することで、この問題を「解決」しました。これは、とにかく必要な機能がいくつかあるためです。

4

2 に答える 2

2

同じ問題に何度も遭遇しましたが、対処方法を見つけました。

問題 2つの可能な依存関係の間に競合があるようです。このファイルjpeg.dllはJRE(WindowsではのようなものC:\Program Files\Java\jre6\bin\)からインクルードされていますが、間違っています。これは、Pythonインストール内にあるPygameディレクトリのに含まれている必要がありますC:\Python31\lib\site-packages\pygame\。ただし、cx_FreezeがJREのものを好む理由はわかりません…</ p>

それを修正する方法は? とても簡単です。正しいファイル(Pygameからのもの)をcx_Freezeスクリプトを実行するディレクトリにコピーするだけです。起動すると、スクリプトは最初に現在のディレクトリを検索し、正しいディレクトリを見つけますjpeg.dll。これで、実行可能ファイルがPNG画像をインポートできるようになります。

于 2012-01-01T23:50:55.100 に答える
1

いくつかのPythonコードを挿入して、ライブラリがロードされたことを示す1つのメッセージと、ロードによってエラーが発生したことを示す別のメッセージを表示してテストします。

try:
   import SDL_image
   print "Loaded SDL_image"
except:
   print "Failed to import SDL_image"

try:
   import libpng
   print "Loaded libpng"
except:
   print "Failed to import libpng"
于 2010-05-25T17:04:50.667 に答える