سؤال

أنا لا يمكن أن تجعل py2exe إلى حزمة بشكل صحيح حتى بسيطة نصي يستخدم win32file أنا دائما الحصول على رسالة الخطأ التالية:

Traceback (most recent call last):
  File "dependency_checker.py", line 1, in <module>
  File "win32file.pyc", line 12, in <module>
  File "win32file.pyc", line 10, in __load
ImportError: DLL load failed: The specified procedure could not be found.

السيناريو يبدو كما يلي:

import win32file
print "Hello world!"

و هنا setup.py:

from distutils.core import setup
import py2exe
setup(console=['dependency_checker.py'])

هل كان لديك مشكلة مماثلة من قبل ؟

إصدارات:

بيثون 2.6.2, py2exe 0.6.9, pywin32-214, Windows 7 و Windows XP Pro هدفا آلة

تحديث:

  • لا يمكن تشغيل المجمعة البرنامج على ويندوز 7 حيث تم إنشاؤه ولكن لا أستطيع تشغيله على XP آلة.
  • جزء من win32file.بيك أن يلقي الخطأ يبدو كما يلي:

    >>> imp.load_dynamic('win32file', r'C:\test\setup-test\src\dist\win32file.pyd')
    

السطر أعلاه على ديف مربع (ويندوز 7) يعمل بشكل صحيح أثناء اختبار مربع (windows XP) بإرجاع خطأ.

** تحديث 2:**

عند استخدام عفريت.load_dynamic لتحميل win32file شكل الثعبان التثبيت ثم يمكنني تحميل win32file."حزب الاتحاد الديمقراطي" من أجل حي مجلد من دون خطأ.

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

المحلول

على soution كان لإزالة MSWSOCK.dll الذي تم نسخه إلى حي الدليل py2exe بشكل غير صحيح.

لقد استعملت procmon و listdll للتحقق ما يتم تحميله من قبل win32file.pyd عند الاستيراد الناجحة و ما dll يتم تحميلها عند استيراد فشل.ثم وجود قائمة dlls لقد تحققت إذا كان يتم تحميلها بشكل صحيح أي.بيثون dlls من حي مجلد windows dll من مجلد windows.

هنا setup.py أنه يعمل بشكل جيد

from distutils.core import setup
import py2exe
setup(console=['dependency_checker.py'],
     options={'py2exe': {"dll_excludes": ["mswsock.dll", "MSWSOCK.dll"]}}
     )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top