3 Stimmen

Wie bringe ich cx_Oracle dazu, unter 64-Bit-Itanium-Windows zu funktionieren?

Ich verwende Windows Server 2003 auf einem 64-Bit Itanium-Server, auf dem auch 64-Bit Oracle 10.2 läuft, und ich möchte cx_Oracle für Python 2.5 installieren. Ich habe cx_Oracle schon oft sowohl unter Windows als auch unter Linux verwendet und es auch schon auf 32-Bit-Versionen dieser Plattformen kompiliert, aber ich habe noch nie eine IA64-Kompilierung versucht.

Keiner der binären Builds von cx_Oracle unter http://cx-oracle.sourceforge.net/ 64 Bit sind, und ich erhalte nach der Installation eines dieser Programme einen Fehler, wenn ich versuche, die import cx_Oracle Daher denke ich, dass es am besten ist, es aus dem Quellcode zu kompilieren.

Bei der Ausführung python setup.py build dann erhalte ich die Fehlermeldung, dass Python mit Visual Studio 2003 erstellt wurde und dass ich etwas brauche, das kompatible Binärdateien erzeugen kann. Ich habe Visual Studio 2005, das anscheinend nicht die Rechnung aufgrund der Verknüpfung gegen eine andere Version der C-Standardbibliothek, und wahrscheinlich auch aus anderen Gründen passen. Leider steht Visual Studio 2003 nicht mehr zum Download zur Verfügung, und ich bin nicht sicher, wo ich es bekommen kann.

Also lade ich MinGW von http://sourceforge.net/projects/mingw/files/ aber auch diese ist nur in 32-Bit-Form verfügbar. Ich versuche es trotzdem, aber während der Kompilierung bekomme ich eine Fehlermeldung, dass eine der Oracle-DLLs, die ich verlinke, ein ungültiges Dateiformat hat.

Im Moment habe ich viele Möglichkeiten, und ich bin mir nicht sicher, worauf ich meine Bemühungen konzentrieren soll:

  1. Ich konnte die 64-Bit-MinGW herunterladen von http://sourceforge.net/projects/mingw-w64/ und versuchen, das zu verwenden, außer dass es nur als Quelle verfügbar zu sein scheint, so dass ich den Compiler kompilieren müsste, wahrscheinlich mit Visual Studio 2005.

  2. Ich könnte versuchen, eine x86-32-Bit-Version von Python zu verwenden und dann das Oracle Instant Client SDK von http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html und verwenden Sie diese dann, um cx_Oracle zu erstellen. Ich würde wahrscheinlich meine ORACLE_HOME auf dem Client festgelegt haben, so dass es nicht versuchen, gegen die 64-Bit-Server-DLLs zu verknüpfen, aber dies scheint, wie es funktionieren könnte.

  3. Ich könnte versuchen, Python selbst aus dem Quellcode zu kompilieren, mit Visual Studio 2005, so dass ich dann Visual Studio 2005 verwenden könnte, um cx_Oracle zu erstellen und mir keine Gedanken über Binärkompatibilitätsprobleme zu machen. Ich habe Python viele Male unter Linux aus dem Quellcode kompiliert und hatte nie Probleme, also würde ich gerne glauben, dass es unter Windows genauso einfach ist.

  4. Ich könnte versuchen, herauszufinden, wie ich Visual Studio 2005 dazu bringen kann, sich mit den richtigen DLLs zu verknüpfen und auf diese Weise kompatible Binärdateien zu erzeugen, ohne Visual Studio 2003 zu benötigen. Intuitiv scheint es wie Visual Studio sollte in der Lage sein, kompatible Binärdateien mit älteren Versionen von sich selbst zu produzieren, aber fast alle meine Compiler-Erfahrung ist mit gcc, so dass ich nicht wirklich wissen.

Ich bin mir nur nicht sicher, worauf ich meine Bemühungen richten soll. Hat jemand einen Vorschlag, wie es weitergehen soll? Ich kann einige der spezifischen Fehlermeldungen, die ich erhalten habe, kopieren/einfügen, wenn das hilfreich wäre.

Ich würde mich besonders freuen, von jemandem zu hören, der cx_Oracle auf einer 64-Bit-Itanium-Version von Windows zum Laufen gebracht hat - ich kann nicht der Erste sein, der das versucht.

1 Stimmen

Da das mingw-w64 Projekt auf sourceforge.net nach mingw-w64.org umzieht, schlage ich vor, die mingw-w64.org

1voto

Eli Courtwright Punkte 174547

Ich entschied mich für Option 2: Ich lud den 32-Bit-Oracle-Instant-Client herunter und kompilierte dann cx_Oracle für 32-Bit-Python mit dem Instant-Client. Alles, was ich tue, ist also 32-Bit, und ich verwende keine IA64-Bit-Executables, und das funktioniert wunderbar.

Wenn ich einen IA64-Compiler hätte, würde ich Option 3 ausprobieren, aber es stellt sich heraus, dass Visual Studio Pro die IA64-Plattform nicht unterstützt, und wir müssten eine Menge Geld ausgeben, um auf eine höhere Version als Pro aufzurüsten.

0voto

fupsduck Punkte 3071

Ich habe dies gestern gelesen und bin nicht überrascht, dass niemand geantwortet hat. Es ist eine sehr spezifische und komplexe Frage. Ich habe zwar keine direkte Erfahrung mit vielen der Tools, mit denen Sie zu tun haben, aber ich habe mich mit den Problemen der Inkompatibilität mit verschiedenen Compilern und Binärdateien beschäftigt. Was auch immer es wert ist, 3. klingt wie Ihre beste Wette.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X