Recientemente he instalado cx_Oracle módulo en mi máquina, con el fin de conectar a un servidor de base de datos de Oracle server. (No tengo el cliente de Oracle que está a mi lado).

  • De Python: la Versión 2.7 x86
  • Oracle: Versión 11.1.X x 64
  • Cx_Oracle:Versión-5.1.2-11g.win32-py2.7

A continuación, cada vez que puedo ejecutar mi script, se produce un error de impresión y el siguiente mensaje:

ImportError: DLL error de carga: El módulo especificado no se pudo encontrar.

Me encontré con un post relacionado en Aquí, así que me estoy preguntando si yo de todos modos tiene que tener un cliente de Oracle a mi lado, donde la secuencia de comandos de python se invoca.

Alguien me puede ayudar? Gracias de antemano.

OriginalEl autor Chen Xie | 2012-09-21

4 Comentarios

  1. 6

    Sí, tienes que tener un cliente de Oracle instalado a su lado.

    De la cx_ORacle LÉAME

    «Por favor, tenga en cuenta que un cliente de Oracle (o servidor) se requiere la instalación en orden
    el uso de cx_Oracle. Si no se requieren las herramientas que vienen con un completo cliente
    de la instalación, se recomienda instalar el Instante en que el Cliente la cual es mucho
    más fácil de instalar.»

    EDITAR enlace al Instante Cliente: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

    Gracias por la respuesta, lo cual es realmente útil. Otra pregunta que se destaca después de eso como que me mudé a mi script en otro ambiente donde una versión de 64 bits de Oracle está instalado, la secuencia de comandos de error. Hice algunas investigaciones y encontró que podría ser debido al hecho de que el cliente de oracle es de 64 bits y la versión de python es de 32 bits.
    El mencionado problema resuelto, por tener un «dummy» de 32 bits del cliente de Oracle, y configurar la variable de entorno «ORACLE_HOME» adecuadamente a las maquetas de ruta de acceso de cliente.
    Sí, el cliente de oracle y el Pitón debe coincidir en bits para ellos trabajar juntos.
    también es útil stackoverflow.com/questions/20159566/…

    OriginalEl autor bpgergo

  2. 10
    # - 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

    Usted puede encontrar arco (32 o 64 bits) para:

    • python con solo ejecutar python en modo interactivo en línea de comandos.
    • cx_Oracle: mira el nombre del archivo descargado.
    • Cliente De Oracle:
      • ejecutar el sqlplus que es parte de su paquete de cliente
      • iniciar el Administrador de Tareas y ver si sqlplus.exe ha «*32» (=32 bits) o no (=64 bits)
      • si usted no tiene sqlplus, uso dumpbin /headers oraocciXX.dll
    • Si usted está usando POSIX usted probablemente ya sabe. Uso file oraocciXX.so

    Por último, si usted todavía no entiende que aquí es realmente para dummies instrucciones:

    • Asegurarse de que ha instalado las versiones de 32 bits de python, cx_Oracle y Oracle Instant Client. Estos también podrían ser de 64 bits, pero debe ser el mismo para todos los 3. No se puede mezclar y combinar. Enlaces:
    • De Windows:
      • set PATH=%PATH%;C:\ProgFiles\OraClient\11_2
    • POSIX (Linux/Unix/Solaris…) <– no Probado..
      • export LD_LIBRARY_PATH=/path/to/your/32bit/oraocciXX.so
      • (64 bits) export LD_LIBRARY_PATH64=/path/to/your/64bit/oraocciXX.so
    • ejecutar path-to-python/python.exe -c "import cx_Oracle" para probar si el programa de instalación está funcionando o no.
      • si se imprime
      • nada: luego del éxito.
      • ImportError: DLL load failed: The specified module could not be found: entonces oraocciXX no se encuentra. El programa de instalación de la env variables correctamente.
      • ImportError: DLL load failed: %1 is not a valid Win32 application: Usted tiene un 32/64 bits desajuste.
    Para comprobar si un archivo binario (dll o exe) es de 32 bits o de 64 bits, también se podría utilizar sigcheck por SysInternals. Más información en http://superuser.com/a/808127/283407

    OriginalEl autor Kashyap

  3. 2

    Después de haber estado tratando de resolver esta cuestión de días, me enteré de que set PATH=%PATH%:<insert Oracle home here> no hacer el truco para mí. Tuve que ir a mi Windows XP propiedades del sistema y añadir el directorio de inicio de Oracle a la ‘ruta’ de la variable en «variables del Sistema’.

    funcionó para mí.

    OriginalEl autor VME

  4. 0

    No puedo comentar aún 🙁 pero para uniquephase anteriormente, puede que desee para tratar de comprobar los permisos de la .exe y .dll para asegurarse de que son ejecutables?

    Así que los pasos que debo hacer para que funcione.

    Descomprimir el instante cliente desde aquí.
    http://www.oracle.com/technetwork/topics/winx64soft-089540.html

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

    Para la integridad, yo no podía conseguir cx_oracle a instalar a través de la pip usando cygwin.

    Así que tuve que utilizar el estándar de dist python (no cygwin) y se instala cx_oracle a través del instalador de windows.

    También, he tenido que añadir f:/opt/instantclient_12_1 (lugar donde he instalado el Oracle instant client) para la ruta de Windows (a través de Sistema->Propiedades Avanzadas del Sistema->Variables de Entorno->Variables del Sistema).

    OriginalEl autor chai

Dejar respuesta

Please enter your comment!
Please enter your name here