proyectos ejemplos python oracle module cx-oracle

python - ejemplos - django



El módulo Python "cx_Oracle" no se pudo encontrar (4)

Después de haber estado tratando de resolver este problema durante días, descubrí que set PATH=%PATH%:<insert Oracle home here> no me solucionó el problema. Tuve que ir a mis propiedades del sistema de Windows XP y anexar el hogar de Oracle a la variable ''ruta'' en ''Variables del sistema''.

Recientemente instalé el módulo cx_Oracle en mi máquina, para conectarme a un servidor de base de datos Oracle remoto. (No tengo un cliente de Oracle a mi lado).

  • Python: versión 2.7 x86
  • Oracle: Verision 11.1.X x64
  • Cx_Oracle: Verion-5.1.2-11g.win32-py2.7

Luego, cada vez que ejecuto mi script, falla e imprime el siguiente mensaje:

ImportError: error en la carga de DLL: no se pudo encontrar el módulo especificado.

Encontré una publicación relacionada en Here , por lo que me pregunto si de todos modos tengo que tener un cliente de Oracle a mi lado donde se invoca el script de python.

¿Puede alguien ayudarme? Gracias por adelantado.


# - This import requires appropriate oraocciXX.dll to be available in PATH (on windows) # (Probably LD_LIBRARY_PATH or LD_LIBRARY_PATH64 on POSIX) # where XX is the oracle DB version, e.g. oraocci11.dll for Oracle 11g. # - This dll is part of the Oracle Instant client pkg available here: # http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html # - Also ensure that python, cx_Oracle and Oracle Client are of same arch (32 or 64-bit) # import cx_Oracle

Puede encontrar el arco (32 o 64 bits) para:

  • python simplemente ejecutando el python en modo interactivo en la línea de comandos.
  • cx_Oracle: mira el nombre del archivo descargado.
  • Cliente de Oracle:
    • ejecuta el sqlplus que es parte de tu paquete de cliente
    • Inicie el Administrador de tareas y vea si sqlplus.exe tiene "* 32" al lado (= 32 bit) o ​​no (= 64 bit)
    • si no tiene sqlplus, use dumpbin /headers oraocciXX.dll
  • Si usa POSIX, probablemente ya lo sepa. Utilice el file oraocciXX.so

Finalmente, si todavía no entiendes, aquí está realmente para instrucciones de dummies:

  • Asegúrese de haber instalado las versiones de 32 bits de python, cx_Oracle y Oracle Instant Client. Estos también podrían ser de 64 bits, pero deben ser iguales para todos 3. No se pueden mezclar y combinar. Campo de golf:
  • Windows:
    • set PATH=%PATH%;C:/ProgFiles/OraClient/11_2
  • POSIX (Linux / Unix / Solaris ...) <- No comprobado ...
    • export LD_LIBRARY_PATH=/path/to/your/32bit/oraocciXX.so
    • (64 bit) export LD_LIBRARY_PATH64=/path/to/your/64bit/oraocciXX.so
  • Ejecute path-to-python/python.exe -c "import cx_Oracle" para probar si su configuración está funcionando o no.
    • si imprime
    • nada: entonces es exitoso.
    • ImportError: DLL load failed: The specified module could not be found : entonces ImportError: DLL load failed: The specified module could not be found oraocciXX. Configure los archivos env correctamente.
    • ImportError: DLL load failed: %1 is not a valid Win32 application : tiene una discrepancia de 32/64 bits.

No puedo comentar todavía :-( pero para la única fase anterior, ¿quieres intentar verificar los permisos de .exe y .dlls para asegurarte de que sean ejecutables?

Entonces, los pasos que debía hacer para que funcione.

Descomprime el cliente instantáneo desde aquí. http://www.oracle.com/technetwork/topics/winx64soft-089540.html

chmod + x * .exe * .dll (estoy usando cygwin).

Para completar, no pude conseguir que cx_oracle se instale a través de pip usando cygwin.

Así que tuve que usar dist net estándar (no cygwin) e instalé cx_oracle a través del instalador de Windows.

Además, tuve que agregar f: / opt / instantclient_12_1 (ubicación donde instalé el cliente instantáneo de Oracle) a la ruta de Windows (a través de Sistema-> Propiedades avanzadas del sistema-> Variables de entorno-> Variables del sistema).