Frage

Ich bin Python 3.1 auf Windows läuft und ich versuche mein Pygame Skript als eine ausführbare Datei über cx_Freeze zu verteilen. Im Augenblick scheint es, außer zu arbeiten, dass die exe Build kann nicht irgendwelche meiner Bilder laden:

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

Googeln hat ergeben, dass dies geschieht, wenn die SDL Imaging-Bibliothek nicht richtig aufgenommen bekommen. Allerdings SDL_image.dll und libpng12-0.dll sind beide Put von cx_Freeze in meinem Build-Verzeichnis, so dass es wie alles, was mir scheint, sollte in Ordnung sein. Warum sollte es nicht möglich sein, PNG-Bilder zu laden?

EDIT: Ich „gelöst“ dieses Problem durch meinen Skript zu Python 2.6 zu portieren und mit py2exe statt, da es einige Funktionen hatte sowieso, dass ich brauchte

.
War es hilfreich?

Lösung

Test durch einige Python-Code Einfügen einer Nachricht anzuzeigen, die angibt, dass die Bibliotheken geladen haben und eine andere Nachricht, um anzuzeigen, dass ihre Belastung zu einem Fehler geführt hat.

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"

Andere Tipps

Ich traf das gleiche Problem oft, aber ich fand heraus, wie man damit umgehen.

Das Problem Es scheint, dass es einen Konflikt zwischen zwei möglichen Abhängigkeiten ist. Die Datei jpeg.dll wird von der JRE (unter Windows, so etwas wie C:\Program Files\Java\jre6\bin\) enthalten, aber es ist die falsche. Es sollte aus dem Pygame Verzeichnis, die sich innerhalb Ihrer Python-Installation, bei C:\Python31\lib\site-packages\pygame\ enthalten sein. Sie wissen nicht, warum cx_Freeze das eine vom JRE vorzieht, obwohl ...

Wie es zu beheben? Es ist ganz einfach. Kopieren Sie einfach die richtige Datei (die von Pygame) in das Verzeichnis, in dem Sie das cx_Freeze Skript auszuführen. Wenn Sie es starten, wird das Skript zunächst im aktuellen Verzeichnis suchen, und den korrekten jpeg.dll finden. Ausführbare Datei sollte nun PNG-Bilder importieren Lage sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top