سؤال
لدي برنامج نصي إعداد قياسي ل PY2EXE الذي أقوم به بالتطبيقات المستندة إلى PYQT في ملفات Windows .EXE.
لقد جربت اليوم نصا بسيطا يستخدم وحدة Pyqwt، ولا يبدو أنه يعمل. يعمل Py2exe على ما يرام، ولكن عندما أقوم بتنفيذ .EXE، فإنه ينشئ، فهو مقالب ما يلي في ملف سجل ولا يعمل:
Traceback (most recent call last):
File "qwt_test.pyw", line 5, in <module>
File "zipextimporter.pyo", line 82, in load_module
File "PyQt4\Qwt5\__init__.pyo", line 32, in <module>
File "zipextimporter.pyo", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading PyQt4\Qwt5\Qwt.pyd
عندما أنظر في PyQt4\Qwt5\
في ال build\bdist.win32\winexe\collect-2.5
الدليل، Qwt.pyd
بالتأكيد هناك.
لا يبدو لي أن أجد أي شيء مفيد عبر الإنترنت فيما يتعلق بهذا الخطأ. ماذا يمكن أن يسبب ذلك؟ شكرا.
المحلول
PY2EXE ليست هي الطريقة الوحيدة، وربما ليست أفضل طريقة، لوضع ملفات EXE لتطبيقات بيثون - على وجه الخصوص، بالكاد، إذا كان على الإطلاق يدعم Pyqt. من فضلك، أنا beesech أنت، تحقق من pyinstaller., ، والتي تعرف عن pyqt (و linux، و mac، يجب أن تهتم ...) - فقط تأكد من استخدام الخروج من رأس SVN، وليس الإصدار "الذي تم إصداره"، والذي في هذا الوقت قديم بعيدة التاريخ ( المشكلة التي نأمل أن تذهب قريبا ...).
نصائح أخرى
بعض الخيارات:
- حاول اللعب مع PY2XE
bundle_files options
(3، 2، 1) (خاصة إذا وضعتهم جميعا في كتلة واحدة مكتبة واحدة، بعض DLLات لا تحب ذلك). - تأكد من نسخة من
msvcp71.dll
يوجد تحت Windows System32 أو في دليل قابل للتنفيذ الخاص بك. - حاول استبعاد DLL صراحة (إضافة qwt.pyd إلى
dll_excludes
الخيار و (بعد البناء) نسخ QWT.PYD (و _qwt.pyd إذا كان موجودا) إلى المسار القابل للتنفيذ.