ERROR: loadlibrary(python27.dll) failed

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

Hallo Zusammen,

ich habe ein Tool mit Python und wxpython programmiert, bei dem ich in letzter Zeit immer folgende Fehlermeldung beim Starten bekomme, obwohl die Datei "Python27.dll" im Installationsverzeichnis vorhanden ist:

'Unzulässiger Zugriff auf einen Speicherbereich. LoadLibrary (pythondll) failed'

Kann vielleicht jemand mir sagen, was die Fehlermeldung bedeutet bzw. was die Ursache dafür sein kann?

Mit freundlichen Grüßen
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@zizou2981: Du machst unzulässige Sachen mit wxpython. Das kann viele Ursachen haben: Mehrere Instanzen in einem Prozess erzeugen, mit Threads arbeiten, Referenzen auf Objekte löschen, die noch benutzt werden, etc. Zeig doch ein Minimalbeispiel, das den Fehler reproduziert.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

LoadLibrary (pythondll) failed muss nicht heißen, dass die dll nicht gefunden wird, sondern kann auch heißen, dass es beim Laden der dll einen Fehler gibt. Es kann z.B. sein, dass die Python27.dll aus dem Installationsverzeichnis nicht mehr zum Rest Deiner Windows-Installation passt, weil irgendeine dll die Python27.dll braucht nicht geladen werden kann.
a fool with a tool is still a fool, www.magben.de, YouTube
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

Zuerst danke euch für die schnelle Antwort.

Gibt es eine schnellere Methode, um herauszufinden, was die Ursache genau ist?

Danke
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@zizou2981: was hast Du geändert vordem es nicht mehr funktioniert hat?
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

@Sirius3: die alte Version des Tools ist mit wxpython 2.8 programmiert. Die neue Version ist dagegen mit wxpython 3.0 implementiert. Ich muss aber auch erwähnen, dass das Tool über ein SVN basierte Update-Mechanismus verfügt. Das heißt das Tool updatet sich selber und startet sich neu, wenn eine neue Version vorhanden ist und genau bei diesem Start kommt zur Fehlermeldung.

Wenn ich aber den Installer für die neue Version verwende, funktioniert alles perfekt.

Außerdem wurde die Alte Version auf einem 32-Bit Rechner erstellt. Die neue Version dagegen wurde auf einem 64-Bit Rechner programmiert bzw. erstellt.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@zizou2981: und wie machst Du das Update und den Neustart?
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

@Sirius3: das Update funktioniert wie folgendes:

das Tool wird gestartet und überprüft am Anfang, ob eine neue Version bzw. SVN-Tag vorhanden ist. Wenn das der Fall ist, startet das Tool eine zweite mitgelieferte EXE-Datei mit 'os.execl'. Diese Datei ist ein zweite kleine Programm, das die haupt Applikation updatet. Das Update-Programm wird vor dem Start vom Hauptprogramm aktualisiert und genau beim Starten mit 'os.execl' kommt die Fehlermeldung.

Das Mechanismus hat eigentlich immer ganz gut funktioniert und habe bis jetzt keine Probleme damit gehabt.
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

Hallo zusammen,

ich habe mich weiter mit dem Thema beschäftigt und habe festgestellt, dass die Datei "python27.dll" im SVN-Repository fehlerfrei funktioniert. Wenn ich aber die Datei mit SVN exportiere und damit die lokale überschreibe, ist die lokale Datei auf einmal fehlerhaft. Ein simple Ersatz der lokale Datei mit Copy-Past verursacht dagegen das Problem nicht.

Hat jemand vielleicht eine Ahnung, was hier schief gelaufen sein kann?

Viele Grüße
BlackJack

@zizou2981: Also der erste ”Fehler” ist IMHO ja so etwas wie ein binäres Python in ein SVN-Repository zu stecken. ;-)

Kann es sein das SVN denkt bei der DLL handelt es sich um eine Textdatei und SVN/Windows konvertiert dann Zeilenendezeichen in der Datei‽ Schnapp Dir doch mal geeignete Werkzeuge und vergleiche die beiden Dateien, dann siehst Du ja wo die sich unterscheiden.
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

@BlackJack: bei binäre Dateien und SVN gebe ich dir vollkommen recht aber das war auch eine Anforderung vom Kunde.

ich habe mit winmerge gerade ein Vergleich gemacht und tatsächlich hat das Tool Unterschiede zwischen einige Dateien (darunter auch python27.dll) entdeckt.

die Frage jetzt ist: wie kann man das mit SVN bzw. pysvn vermeiden?
BlackJack

@zizou2981: Vielleicht hilft die FAQ hier weiter: How does Subversion handle binary files?
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

@BlackJack: danke für den Link :)

das Problem wurde jetzt endlich gelöst und zwar wie folgendes:

1. die Binär-Dateien innerhalb des SVN-Verzeichnis (mit SVN-Delete) löschen und ein Commit machen.
2. zum Verzeichnis muss ein neue SVN-Property eingefügt werden und zwar "auto-props". Damit kann SVN besser ordnen, von welchem Typ die Datei ist.
3. Schließlich müssen die gelöschten Dateien im Verzeichnis mit SVN-Add neu eingefügt werden und commitet

Danke an euch Alle und viele Grüße
Antworten