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
ERROR: loadlibrary(python27.dll) failed
@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.
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.
@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.
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: 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.
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.
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
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
@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.
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.
@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?
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?
@zizou2981: Vielleicht hilft die FAQ hier weiter: How does Subversion handle binary files?
@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
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