import select: ImportError: DLL load 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.
Termy
User
Beiträge: 4
Registriert: Mittwoch 18. Februar 2009, 11:08

import select: ImportError: DLL load failed

Beitragvon Termy » Mittwoch 18. Februar 2009, 11:13

Hi@all.

Ich habe mir für mein C++ Programm ein Python FTP-Server-Script heruntergeladen.
Das Embedden von Python und das Ausführen des Scripts funktionieren wunderbar. Nur leider sieht es so aus als finde er eine DLL nicht:

'import site' failed; use -v for traceback
Traceback (most recent call last):
File "<string>", line 10, in <module>
File "D:\Programming\Projects\CallTermy_Server_\release\ftpserver.py", line 11
1, in <module>
import asyncore
File "D:\Programming\Projects\CallTermy_Server_\release\lib\asyncore.py", line
49, in <module>
import select
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.


Wenn ich das Script mit IDLE ausführe funktioniert alles wunderbar.
Weiß jemand welche DLL ich meinem Programm hinzufügen muss?

Freundliche Grüße
Termy
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Re: import select: ImportError: DLL load failed

Beitragvon CM » Mittwoch 18. Februar 2009, 11:57

Hallo und willkommen im Forum,

Termy hat geschrieben:Weiß jemand welche DLL ich meinem Programm hinzufügen muss?

Ja: Du. Du hast ein Programm geschrieben und dazu ein Skript runtergeladen - da musst Du doch wissen, wie Du das kompiliert hast, bzw. wie das heißt, was Du heruntergeladen hast? Oder verstehe ich die Frage falsch? Im Zweifel würde ich mindestens angeben, wie der Downloadlink ist, damit jemand das ausprobieren kann, bzw., wenn jemand das entsprechende Paket kennt, dazu Tipps geben kann. So müssten wir Kristallkugeln haben ;-).

Ggf. mußt Du den Pfad der dll in sys.path von Python eintragen:

Code: Alles auswählen

sys.path.append(pfad zur dll)


Gruß,
Christian

PS Bzgl. IDLE: Such mal hier im Forum danach. Du wirst überschüttet mit Gründen, warum Du besser einen anderen Editor suchst. ;-)

edit:
PPS Gibt es ein Äquvivalent zum LD_LIBRARY_PATH unter Windows?
Termy
User
Beiträge: 4
Registriert: Mittwoch 18. Februar 2009, 11:08

Beitragvon Termy » Mittwoch 18. Februar 2009, 12:02

Das Problem ist: So wie es aussieht liegt das Problem nicht an dem Script, sondern an Python wenn ich es in mein C++ Programm embedde, da es ja in IDLE wunderbar läuft.

IDLE greift ja auf DLL's im SysWow Ordner zu. Mein Programm kann das nicht. Ich müsste genau die wichtige DLL auf die zugegriffen wird kopieren und meinem Programm beilegen.
Ich weiß nur nicht welche das ist.

Zu dem Script:
Das ist dieses hier: http://code.google.com/p/pyftpdlib/
Benutzeravatar
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Beitragvon ms4py » Mittwoch 18. Februar 2009, 12:27

Termy hat geschrieben:IDLE greift ja auf DLL's im SysWow Ordner zu. Mein Programm kann das nicht. Ich müsste genau die wichtige DLL auf die zugegriffen wird kopieren und meinem Programm beilegen.


Oder du machst einfach(wie schon gesagt):

Code: Alles auswählen

sys.path.append(pfad zu SysWow)


(Was auch immer der SysWow Ordner ist...)
Termy
User
Beiträge: 4
Registriert: Mittwoch 18. Februar 2009, 11:08

Beitragvon Termy » Mittwoch 18. Februar 2009, 12:31

Hm.. etwas umständlich. Der Pfad zum SysWow Ordner ist ja unterschiedlich je nach Os..

Hab jetzt eh eine andere Möglichkeit gefunden mein Script ausführen zu lassen. Und die funktioniert ;-)

PS:
/********************************************************************************
** FTP Server starten
********************************************************************************/
#ifdef _WIN32
system("server_start.py");
#else
system("python server_start.py");
#endif


(Benötigt natürlich Python vorinstalliert.)
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Mittwoch 18. Februar 2009, 12:55

Wenn Du in 'server_start.py' das richtige shebang schreibst, kannst Du auf die Unterscheidung verzichten. Vorschlag:

Code: Alles auswählen

#! /usr/bin/env python


Gruß,
Christian

PS Deine Lösung ist nicht die Antwort auf die gestellte Frage ;-).
Termy
User
Beiträge: 4
Registriert: Mittwoch 18. Februar 2009, 11:08

Beitragvon Termy » Mittwoch 18. Februar 2009, 13:04

Naja.. ich kenn mich in Python nicht wirklich aus. Hab da auch noch nichts selbst geschrieben.
Deshalb mach ich die Unterscheidung lieber in C++.. ist ja nich so lang von daher.

Das Python Script ist auch nur ne Notlösung da ich auf die Schnelle keine C++ FTP-Server Lösung gefunden habe die Plattformunabhängig ist und so arbeitet wie ich will.
EDIT: Und ich bin zu faul selbst eine zu schreiben^^

@PS: Stimmt ja. Ist nur ne Umgehung ;-)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder