تمكين دعم JPEG ل Qimage في البرامج النصية Py2exe Python Compount؟

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

سؤال

أحاول استخدام صورة JPEG في كائن Qimage من برنامج نصي Python، مع PYQT4.

يعمل البرنامج النصي نفسه تماما، ويمكن التلاعب بالتلاعب والتلاعب وجميعها. ومع ذلك، عندما أحاول "ترجمة" هذا البرنامج النصي مع py2exe، كل شيء يعمل ولكن صورة JPEG. استبداله بأعمال مكافئة PNG، ولكن نظرا لتنزيل برنامجي الصور من الويب، فلن تكون دائما بتنسيق PNG ولا يمكنني تحمل تحويلها جميعا مع مكتبة أخرى.

لقد اكتشفت أن دعم صور JPEG ل Qimage، إلى جانب تنسيقات الصور الأخرى، يتم توفير بعض DLLs في الدليل qt Plugins ImageFormats (يطلق عليها QJPEG4.DLL و QJPEG4D.DLL). أعتقد أنني بحاجة إلى استخدامها بطريقة أو بأخرى في قابلة للتنفيذ، لكنني لا أعرف كيف. لقد حاولت ببساطة نسخها إلى دليل EXE الخاص بي، لا حظ. لقد حاولت، كما مبين هنا, ، لتضمين تلك الملفات ك Data_Files في البرنامج النصي Setup.py، ولكن لا حظ (يبدو أن كل شيء يقوم بنسخ هذه الملفات إلى دليل EXE، لذلك لا يغير شيئا عن نسخها يدويا على أي حال).

أنا متأكد من وجود حفنة من التطبيقات هناك باستخدام Pyqt مع صور JPEG، كيف يفعلون ذلك؟ بدا وكأنه مهمة تافهة ولكن أنا عالق عليها الآن.

وأيضا، أريد أن يكون تطبيقي عبر منصة (لماذا سأكون ترميزا في بيثون؟)، آمل ألا أتشغيل في مشكلة التعبئة والتغليف (ليس الوحيد) عند التعبئة لنظام التشغيل X أو Linux. هل أنا؟

هل كانت مفيدة؟

المحلول

بعد ساعات من العثرة مع نفس المشكلة، أود أن أشارك الحل الذي عمل لي في نظام التشغيل Windows Vista: باستخدام Python2.6

نسخ الدليل التالي في Dist Distructure الناتج عن PY2EXE:

C:\Python26\Lib\site-packages\PyQt4\plugins\imageformats

لقد أسقطت للتو دليل ImageFormats مباشرة في Districate الخاص بي، دون أي تعديلات أخرى على Qt.conf أو أي شيء من هذا القبيل. لم أحاول ذلك، لكن هذا قد يعمل من أجل فونون أيضا.

نصائح أخرى

سأضطر إلى الاعتراف أنني لم تتمكن أبدا من الحصول على مزيج PY2EXE + PYQT صحيح تماما (و PY2EXE لا يساعد على الإطلاق مع عبوة عبر النظام الأساسي). يبدو أن Pyinstaller أفضل بكثير - المستندات في http://www.pyinstaller.org/ قديم، لكن جذع SVN هو الحديث أكثر. بعض المستندات في شرائح تعطى في مؤتمر بيكون إيطاليا ثلاثي - http://www.pycon.it/static/stuff/slides/distribuire-programmi-python-con-pyinstaller.pdf. - وعلى الشرائح باللغة الإنجليزية، وتحتوي على البريد الإلكتروني الحالي للصيانة، لذلك يجب أن يساعدوا! (ودعونا جميعا لوبى المشرف الحالي لتحديث المستندات ...! -)

حاول إضافة أ Qt.conf. ملف إلى دليل EXE الخاص بك، لإخبار QT أين للعثور على الثنائيات والمكونات الإضافية.

شيء مثل الأعمال التالية في حالة بسيطة، حيث تفريغ كل DLL في نفس DLL كإكس:

[Paths]
Prefix = .
Plugins = .

تحديث: ثم انسخ محتويات الإضافات الخاصة بك (أدلة ImageFormat / SQLDriver، إلخ) إلى EXE DIR. لا أعتقد أنه يمكنك تحميل DLLs Plugin من نفس الدليل مثل EXE. يرى كيو تي المساعد Doc. للحصول على تفاصيل حول الدلائل الفرعية المساعد. (أو، ترك "الإضافات =." ونسخ الإضافات Dir إلى EXE DIR، لذلك لديك /Plugins/imageloaders/qjpeg4.dll).

Etienne - شكرا لك على الحافة. بعد الكثير من القراءة والمحاكمة والخطأ، وصلت إلى نفس الاستنتاج: استخدم PIL لإظهار JPEGS في تطبيق PY2App الذي تم إنشاؤه.

http://www.thetoryparty.com/wp/2009/08/27/pyqt-and-py2app-i-dont-know-what-do-do-with-you-when-youre-like- هذا

ما أعتقد أنه هو أن الحلول المقترحة ل PY2EXE / Windows لا تنطبق بالضرورة على py2app / osx.

أنا على أوسكس ليوبارد. دعونا نفترض أن لديك طلب MyApp.app.

  • ضع المكتبات libqjpeg.dylib و libqgif.dylib في
    MyApp.app/Contents/plugins/imageformats/
  • ضع هذا في qt.conf في MyApp.app/Contents/resources/:

    [Paths]
    Prefix = .
    Binaries = .
    

على جهازي (ليوبارد) هذا يعمل.

بعد محاولة جميع الحلول المذكورة أعلاه عبثا، انتهت للتو باستخدام Pil لتحميل صوري. منذ أن أردت تحويل هذه الصور إلى نسيج في Widget OpenGL QT، كانت النتيجة هي نفسها سواء قمت بتحميل الصورة باستخدام QT أو PIL. ومع ذلك، فأنا أحيطي أن مثل هذا الشيء الأساسي مثل تحميل JPEGs معقدة للغاية في مكتبة واجهة المستخدم الرسومية معروفة واستخدامها على نطاق واسع ك Qt.

كان لي نفس المشكلة بالضبط. إصلاحه باستخدام هذا: http://mail.python.org/pipermail/python-list/2008-june/669374.html

  1. انسخ الإضافات كيو تي إلى الدليل: $ your_dist_path / pyqt4 / الإضافات؛
  2. نسخ Qt.conf إلى DIST الدليل الخاص بك؛
  3. تحرير Qt.conf، تغيير البادئة إلى ./pyqt4

بالنسبة لي، تم حل المشكلة مجرد نسخ "Qt.conf" لبرنامج التنفيذ.

يمكنك العثور على "Qt.conf" في ... pythonxx lib site-packages pyqt4 qt.conf.

شكرا للمساعدة.

فشل كل شيء أعلاه بالنسبة لي حتى أدركت أنني كنت تجميع .exe (أي خيار "Bundle_Files": 2 في Setup.py. لقد غيرت ذلك إلى Bundle_Files = 2، والآن يعمل بشكل رائع.

الحلول المذكورة أعلاه بخير. على وجه التحديد، أضفت فقط السطر التالي في Setup.py الخاص بي.

(بالإضافة إلى الملفات الأخرى، بالطبع).

بعد ذلك، تكون DLLS تحميل الصورة في my_exe_dir / imageformats

لم أكن بحاجة إلى Qt.conf لجعل هذا العمل، على الرغم من أنني متأكد من أنك يمكن أن تستخدمه إذا كنت ترغب في الحفاظ على شجرة دليلك أقل تشوشا.

من الممكن استخدام البرنامج المساعد JPEG باستخدام برنامج نصي Py2exe'd، حتى باستخدام Bundle_Files. تحتاج إلى ترتيب شيئين للحصول على هذا للعمل بشكل صحيح:

  1. نسخ PYQT4 / الإضافات / ImageFormats إلى دليل الإخراج PY2EXE (الافتراضي: dist)

    عليك فقط نسخ التنسيقات التي تحتاجها فعليا.

  2. عند استخدام خيار Bundle_Files، تحتاج إلى execlude ملفات DLL QT من ZipFile باستخدام --dll-excludes خيار PYEXE.

    لا يزال يتعين عليك نسخ DLLS QT إلى دليل الإخراج بطريقة أخرى (مثل استخدام data_files اختيار).

على ويندوز، تعمل الحلول المقترحة تماما.

ومع ذلك، في OSX لا يمكن أن يجعلها تعمل حتى مع التعليمات هنا أعلاه.

السؤال هو: libqjpeg.dylib و libqgif.dylib الملفات موجودة في /Developer/Applications/Qt/plugins/imageformats/ الدليل، وذلك إذا قمت بتثبيت QT نفسها، وليس فقط PYQT. هذه الملفات لا تعمل من أجلي.

في توزيع PYQT، أرى الملفات libqjpeg.bundle و libqgif.bundle في /opt/local/libexec/qt4-mac/plugins/imageformats/, ولكن هذه ليست مكتبات، و BTW لا أستطيع فتح محتوياتها أيضا، حتى لو كان لديهم امتداد. باستخدام هذه الملفات بدلا من ذلك لا يعمل أيضا.

أنا فضولي لمعرفة ما فعلته لجعله يعمل على OSX. لقد قمت بتثبيت Pyqt التالية هذا الدليل.

شكرا على إجاباتك المفيدة للسؤال! لقد واجهت نفس المشكلة كما فعلت ولا توجد حلول يمكن أن تساعد. نأمل أن أستخدم VCS ووجدت أن النسخة القديمة من تطبيقات JPEG محملة بشكل صحيح وتوقف الإصدارات الجديدة القيام بذلك. اشتعلت هذا الخطأ باستخدام pyside v1.2.2..

لتمكين تحميل المكتبات، استخدمت نفس الحل كما فعل macke (أي إضافة وتحرير qt.conf).

كان بلدي Qt.conf التالي:

[Paths]
Binaries = .
Plugins = qtplugins

C:\Python27\Lib\site-packages\PySide\plugins directory تم نسخها إلى qtplugins الدليل، لذلك كان لدي أدلة التالية:

qtplugins\accessible
qtplugins\codecs
qtplugins\graphicssystems
qtplugins\iconengines
qtplugins\imageformats

كان لدي الرمز التالي:

class NotesCalendar(QtGui.QCalendarWidget):
    note_icon = QtGui.QImage("res/16note.png")

متغير الطبقة المتحركة NotesCalendar.note_icon إلى منشئ حل المشكلة وبدأ QT تحميل مكتباته بشكل صحيح. يبدو أن منشئ متغير الفئة توقف بعض الاشياء الداخلية الداخلية.

وهو يعمل مع عدم وجود مشاكل في ويندوز. تحديد الصحيح qt.conf والنسخ plugins الدليل يكفي لتمكين دعم JPEG في Py2exe. + بيسيد يبني. بالطبع، يجب أن لا يكون لديك أي مشاكل في التعليمات البرمجية الخاصة بك.

آمل أن ينقذ هذا شخص ما في اليوم! ؛)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top