SDL / Pygame Неспособность загружать изображения PNG с CX_FREEZE

StackOverflow https://stackoverflow.com/questions/2883237

  •  04-10-2019
  •  | 
  •  

Вопрос

Я бегаю Python 3.1 на окнах, и я пытаюсь распространить свой сценарий Pygame как исполняемый файл через CX_FREEZE. Прямо сейчас, похоже, работает, за исключением того, что сборка EXE не может загрузить какие-либо мои изображения:

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

Googling показал, что это происходит, когда библиотека визуализации SDL не будет включена правильно. Однако, SDL_image.dll а также libpng12-0.dll Оба поставляются CX_FREEZE в мой каталог сборки, поэтому мне кажется, что все должно быть в порядке. Почему бы он не сможет загрузить PNG изображения?

Редактировать: Я «решил» эту проблему, портив мой скрипт в Python 2.6 и вместо этого использую Py2exe, поскольку в любом случае у него есть некоторые функциональные возможности.

Это было полезно?

Решение

Испытайте, вставляя несколько Python Code для отображения одного сообщения, указывающего, что библиотеки загружаются и другое сообщение, чтобы указать, что их нагрузка привела к ошибке.

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"

Другие советы

Я столкнулся с той же проблемой много раз, но я узнал, как с этим разобраться.

Эта проблема Кажется, что существует конфликт между двумя возможными зависимостями. Файл jpeg.dll включен из JRE (в Windows, что-то вроде C:\Program Files\Java\jre6\bin\), но это неправильно. Он должен быть включен из каталога Pygame, расположенный в пределах установки Python, в C:\Python31\lib\site-packages\pygame\. Отказ Не знаю, почему cx_freeze предпочитает один из jre, хотя ...

Как это исправить?Это довольно легко. Просто скопируйте правильный файл (тот, один из pygame) в каталог, в котором вы выполняете сценарий CX_FREEZE. Когда вы начнете его, сценарий будет сначала посмотреть в текущий каталог и найдет правильный jpeg.dll. Отказ Ваш исполняемый файл должен иметь возможность импортировать изображения PNG сейчас.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top