質問

WindowsでPython 3.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.dlllibpng12-0.dll どちらもCX_FREEZEによって私のビルドディレクトリに入れられているので、すべてがうまくいくはずのように思えます。なぜPNG画像をロードできないのですか?

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

役に立ちましたか?

解決

いくつかのPythonコードを挿入して、ライブラリがロードされていることを示すメッセージを表示し、それらのロードがエラーをもたらしたことを示す別のメッセージを示すテスト。

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"

他のヒント

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top