Windows Server 2003 64bit, Oracle 10g

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
TimPe
User
Beiträge: 8
Registriert: Freitag 7. September 2007, 13:56
Wohnort: Hamburg

Hallo,

das Python Script soll auf einem Windows Server 2003 mit einem 64bit Prozessor laufen. Die Datenbank ist eine Oracle 10g auf einer anderen Maschine.

Ich habe das Modul cx_Oracle-4.2-win32-10g-py24.exe installiert. Das hat leider nicht funktioniert. (Der Name sagt es ja auch schon.)
Ich bekomme die Meldung:
ImportError: DLL load failed with error code 193

Was kann ich nun tun? Hat irgend jemand cx_oracle auf einer win64 Maschine zum laufen gebracht? Ansonsten kommt es nicht darauf an cx_oracle zu verwenden, irgendeine anderes Modul währe mir auch recht. Was gibt es denn da noch?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo TimPe, willkommen im Forum,

Welche Python-Version nutzt du? i386 oder AMD64?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
TimPe
User
Beiträge: 8
Registriert: Freitag 7. September 2007, 13:56
Wohnort: Hamburg

Der Prozessor ist vom Typ Intel Xeon, also fällt AMD64 aus. Meine Python Version ist Python 2.4.1. Haben wir uns richtig verstanden?
TimPe
User
Beiträge: 8
Registriert: Freitag 7. September 2007, 13:56
Wohnort: Hamburg

Also ich denke ich habe dich falsch verstanden. Der Prozessor ist ein 64bit Xeon Prozessor. Also wird dann doch ein Intel 64 bzw. AMD64 Befehlssatz verwendet? Ich müsste das mit unserem Sysadmin klären.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

TimPe hat geschrieben:64bit Xeon Prozessor
Hallo TimPe!

Rufe IDLE oder die PythonShell auf. Was steht dort in der ersten Zeile? Bei mir steht:

Code: Alles auswählen

Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32
Bei mir läuft also alles im 32-Bit Modus. Und Module, die für 32-Bit-Python kompiliert wurden, funktionieren hier einwandfrei.

Wenn bei dir etwas von 64-Bit steht, dann hast du Pech. Installiere dir einfach ein 32-Bit-Python. Dann sollte auch cx_Oracle funktionieren. Es ist auch möglich, das 32-Bit-Python zusätzlich zum 64-Bit-Python zu installieren. Du musst nur beim Installieren einen anderen Zielpfad angeben. Auch solltest du in den erweiterten Einstellungen (beim Installieren) angeben, dass dein 32-Bit-Python NICHT das Standard-Python werden soll. Dann bleibt das 64-Bit-Python für alle anderen Anwendungen der Standard und du kannst deine Anwendung, die auf Oracle zugreifen muss, beim Aufruf auf das 32-Bit-Python verweisen.

Alles was ich schrieb, gilt natürlich nur, wenn du ein 64-Bit-Linux installiert hast und du cx_Oracle damit nicht zum Laufen bekommst. Einen Geschwindigkeitsunterschied zwischen 32-Bit und 64-Bit wirst du nicht bemerken.

mfg
Gerold
:-)

PS: Die andere Variante ist, cx_Oracle selber kompilieren. Aber das ist dann schon ein Stück schwieriger als eine zusätzliche Python-Installation.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

TimPe hat geschrieben:Also ich denke ich habe dich falsch verstanden. Der Prozessor ist ein 64bit Xeon Prozessor. Also wird dann doch ein Intel 64 bzw. AMD64 Befehlssatz verwendet?
Ja, genau das war meine Frage. Der Xeon ist ja eigentlich ein 32-Bit-Prozessor, der ebenso wie AMD's Opteron x86_64-Code ausführen kann (zumindest neuere Modelle, ob es nun AMD64, EM64T, Intel 64, x86_64 heißt ist ja egal). Meine Vermutung ist nun, dass der Interpreter den du nutzt nicht zu der Bitbreite der cx_Oracle-Bibliothek passt.

Ich selbst habe keine Erfahrung mit 64-Bit Windows, aber unter Linux kann ein Programm entweder 32-Bit oder 64-Bit sein, aber nicht beides (also müssen alle Libs die gleiche Bitbreite nutzen).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
TimPe
User
Beiträge: 8
Registriert: Freitag 7. September 2007, 13:56
Wohnort: Hamburg

Ok, ich habe
Python 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit (Intel)] on win32

cx_oracle ist auch 32 bit. Allerdings ist die oci.dll (Oracle Call Interface) in 64bit.

Um das Ganze zum laufen zu bewegen, brauche ich also IMHO Python in 64bit und cx_oracle in 64bit?!
TimPe
User
Beiträge: 8
Registriert: Freitag 7. September 2007, 13:56
Wohnort: Hamburg

Es gibt eine AMD64 Version von Python.:)
http://www.python.org/ftp/python/2.5/py ... .amd64.msi
Dann fehlt ja *nur* noch cx_oracle.

Mal ein anderer Weg:
Wie sieht es den mit ODBC aus? Laut der Liste http://www.python-forum.de/topic-6848.html gibt es http://pyodbc.sourceforge.net/ und http://ceodbc.sourceforge.net/. Kann das funktionieren? Wenn ich mir die Downloads anschaue gibt es aber wieder nur 32bit Versionen.:(
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

TimPe hat geschrieben:Es gibt eine AMD64 Version von Python.:)
http://www.python.org/ftp/python/2.5/py ... .amd64.msi
Dann fehlt ja *nur* noch cx_oracle.
Wie gerold sagte steht es dir frei, das selbst zu kompilieren. Zumindest solange es die nötigen Libs in x86_64-Versionen gibt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
TimPe
User
Beiträge: 8
Registriert: Freitag 7. September 2007, 13:56
Wohnort: Hamburg

Um so etwas mal eben zu kompilieren fehlt mir die Erfahrung. Ich werde das Problem umgehen, indem ich ein Windows XP innerhalb einer VMware abspiele.

Vielen Dank für eure Bemühungen.

Tim
Antworten