سؤال

أقوم بتشغيل Python 3.1 على Windows وأحاول توزيع البرنامج النصي 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 لعرض رسالة واحدة تشير إلى أن المكتبات قد تم تحميلها ورسالة أخرى للإشارة إلى أن تحميلها أدى إلى خطأ.

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