Frage

Ich kann nicht py2exe machen richtig, auch ein einfaches Skript zu packen, die win32file verwendet Ich bin immer wieder die folgende Fehlermeldung erhalten:

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.

Das Skript sieht wie folgt aus:

import win32file
print "Hello world!"

Und hier ist die setup.py:

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

Haben Sie vor ähnliches Problem gehabt?

Versionen:

Python 2.6.2, 0.6.9 py2exe, pywin32-214, Windows 7 und Windows XP Pro als Zielmaschine

UPDATE:

  • kann ich das mitgelieferte Programm auf meinem Windows 7 laufen, wo es erstellt wurde, aber ich kann es auf dem XP-Rechner nicht ausgeführt werden.
  • Der Teil des win32file.pyc, die den Fehler wirft sieht wie folgt aus:

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

Die Zeile oben auf meinem Dev-Box (Windows 7) ordnungsgemäß ausgeführt wird, während auf Testbox (Windows XP) gibt den Fehler.

** UPDATE 2: **

Als ich imp.load_dynamic verwenden win32file Form Python-Installation zu laden, dann kann ich die win32file.pyd für den dist-Ordner ohne Fehler neu zu laden.

War es hilfreich?

Lösung

Die soution war mswsock.dll zu entfernen, der mit dem dist-Verzeichnis von py2exe kopiert wurde falsch.

ich verwendet habe, procmon und listdll zu überprüfen, was von win32file.pyd geladen wird, wenn Import erfolgreich ist und welche DLL geladen werden, wenn Import fehlschlägt. Dann hat die Liste der DLLs ich geprüft habe, ob sie richtig dh geladen werden. Python-DLLs aus dist-Ordner und Windows-DLLs aus Windows-Ordnern.

Hier ist die setup.py, die feine

funktioniert
from distutils.core import setup
import py2exe
setup(console=['dependency_checker.py'],
     options={'py2exe': {"dll_excludes": ["mswsock.dll", "MSWSOCK.dll"]}}
     )
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top