Estoy recibiendo el estándar de «DLL error de carga; módulo no encontrado» error al intentar importar cx_Oracle. Tengo el instante adecuado instalado el cliente, las rutas de acceso son correctos… ejecutando Dependency Walker me dice que me falta el siguiente .dll
MSVCR90, GPSVC, IESHIMS.

Me estoy quedando en el instante en que el cliente de Oracle 11g y Python 2.7. Alguien tiene alguna idea? La mayoría de las respuestas que he encontrado implican una ruta de acceso incorrecta, pero que no parece ser el caso… además, no puedo encontrar ninguna de esas .dll en cualquier otro lugar en mi sistema.

EDITAR:
Terminé la instalación de Oracle 11g XE (32 bits); tanto en Python 2.7 y la cx_Oracle también son de 32 bits (también debo agregar que estoy en Windows). cx_Oracle ahora se instala limpiamente; sin embargo al conectarlo me aparece un error:

InterfaceError: Unable to acquire Oracle environment handle

El ORACLE_HOME ruta de acceso es correcta, como es el bin en la carpeta de la RUTA de…

OriginalEl autor Victoria Price | 2012-11-27

5 Comentarios

  1. 4

    He tenido el mismo problema: se tiene que establecer la variable de ORACLE_HOME para que coincida con su cliente de Oracle de la carpeta (en Unix: a través de un shell, por ejemplo, en Windows: crear una nueva variable si no existe en las variables de Entorno del Panel de Configuración) ya que esta es la forma en que el cx_Oracle módulo puede poner el enlace.

    Su carpeta $ORACLE_HOME/network/admin (%ORACLE_HOME%\network\admin en Windows) es el lugar donde su tnsnames.ora archivo debe existir.

    Tengo mi ORACLE_HOME la coincidencia de mi cliente de Oracle de la carpeta, pero sigue recibiendo el mismo error, también tengo mi tnsnames.ora, en la correcta locatoin así.. alguna idea?
    Esto no ayuda

    OriginalEl autor Emmanuel

  2. 7

    Qué versión de Windows está en ejecución ? Es de 32 o 64 bits ?

    Es Oracle Instant Client Treinta y dos o Sesenta y cuatro poco ?

    Es tu instalación de Python Treinta y dos o Sesenta y cuatro poco ?

    Es su cx_oracle la versión correcta ? Treinta y dos o Sesenta y cuatro poco ?

    MSVCR90.dll es parte de Microsoft Visual C++ 2008 SP1 Redistributable package.

    Versión de 32 bits disponible aquí , la versión de 64 bits disponible aquí.

    IESHIMS.dll se encuentra en C:\Program Files\Internet Explorer\Ieshims.dll (de 32 bits de Windows ubicación o de 64 bits de Windows Ubicación) o C:\Program Files\Internet Explorer (x86)\Ieshims.dll` (de 32 bits de Windows Ubicación en la versión de 64 bits de Windows) , si su versión de Windows Vista o versiones más recientes.

    GPSVC.dll debe vivir en C:\Windows\System32.

    Dependency Walker informes de estos últimos 2 archivos Dll como falta porque no son utilizados por los Informes de Errores de Windows que uso IEFrame.DLL y se demora cargado, lo que significa que nunca se puede realmente ser necesario.

    Me encontré con que en el fin de obtener cx_oracle para importar de manera limpia, usted necesita para asegurarse de que las versiones de sus dependencias partido. Usted también necesita asegurarse de que la instalación de Oracle coincide con su ORACLE_HOME y su variable de entorno PATH contiene %ORACLE_HOME%/bin, que se establece como una variable de Entorno o en el registro, y que su tnsnames.ora archivo vive en el valor TNS_ADMIN. Como se indica en Emmanuel‘s respuesta, el valor predeterminado para un unset TNS_ADMIN configuración es %ORACLE_HOME%\network\admin.

    Yo también rara vez se utiliza en el instante de la versión de cliente de la instalación de oracle a menos que sea absolutamente necesario, porque a diferencia de las otras versiones no establece siempre asegurarse de que se establecen o mantienen Camino, ORACLE_HOME o TNS_ADMIN correctamente, que conducen a tnsnames.ora y OCI.dll no se encuentra. Esto se vuelve más complicado cuando se tienen varias versiones de Python o versiones de Oracle en la misma máquina.

    A conjunto explícito de ellos puedes utilizar las Variables de Entorno (ya sea de Usuario o de Sistema) , que viven en el Panel de Control en el Icono de Sistema, configuración Avanzada del sistema de tareas, Pestaña Avanzado, medio Ambiente botón.

    Respecto InterfaceError: Unable to acquire Oracle environment handle, esto ocurre especialmente cuando la oposición a no resolver OCI.dll , cx_Oracle no sabe que OCI.dll a utilizar, normalmente este es el caso, porque de la variable de RUTA de acceso que contiene dos o más directorios de búsqueda que contienen OCI.dll.

    Específicamente para garantizar su RUTA de acceso contiene un solo instante de OCI.dll desde el instante en que el cliente de instalación o la instalación de Oracle 11G XE instllation debería solucionar el problema.

    Hizo desinstalar el instante en que el cliente antes de la instalación de Oracle 11G XE ?

    Pegue lo siguiente en un Símbolo del sistema.

    echo The current ORACLE_HOME is %ORACLE_HOME%

    echo The current TNS_ADMIN is %TNS_ADMIN%

    echo The current PATH is %PATH%

    Para ver el valor actual de estas variables.

    Más recursos

    Mi ORACLE_HOME es como sigue: Oracle\app\oracle\producto\11.2.0\server, como debe ser, y el camino es el correcto de la carpeta bin… estoy recibiendo ahora «no se puede adquirir entorno de oracle mango»… (ver ediciones a la pregunta principal)…además, no puedo conectar con SQL Plus.

    OriginalEl autor Appleman1234

  3. 1

    Lo que he descubierto en mi caso es el siguiente:

    • virtualenv instalación en reubicable modo (–reubicable) utiliza /usr/bin/env utilidad como shebang para django-admin.py:

      #!/usr/bin/env python2.7
    • env es conveniente utilidad para escribir scripts unix que puede ser instalarán en diversos nx entornos

    • en OSX (estoy usando macos 10.12 Sierra) por alguna razón /usr/bin/env esconde algunas variables del sistema visibles en el proceso primario – en este caso DYLD_LIBRARY_PATH no es transferida a un proceso hijo. Prueba:

      set|grep DYLD_LIBRARY_PATH
      DYLD_LIBRARY_PATH=.../oracle/instantclient_11_2
      
      env|grep DYLD_LIBRARY_PATH
      # nothing
    • una comprobación más::

      python -c "import os; print os.environ.get('DYLD_LIBRARY_PATH')"
      .../instantclient_11_2:/usr/local/opt/openssl/lib
      
      # put the same line in first line of django-admin.py 
      # and you will get no output for DYLD_LIBRARY_PATH 
    • interesante es que en Linux (por ejemplo, CentOS) este no es el caso, DYLD_LIBRARY_PATH y LD_LIBRARY_PATH son visibles en el niño los procesos de

    • porque de esta cx_oracle.así no se puede cargar necesarios oracle bibliotecas de falla con el error:

      Unable to acquire Oracle environment handle

    La SOLUCIÓN está en el cambio de proceso en django-admin.py:

    • de:

      #!/usr/bin/env python2.7
    • a algo como (marque su python venv instalación: que python):

      #!.../venvs/project11/bin/python2.7
    • esto funciona así, pero es menos flexible que el de las anteriores solución::

      #!/usr/bin/env DYLD_LIBRARY_PATH=<put-full-path->/instantclient_11_2 python2.7
    • o la más fácil no utilice reubicable virtualenv instalación de OSX, cuando se utiliza cx_Oracle o cualquier otro DYLD_LIBRARY_PATH módulos dependientes

    OriginalEl autor Robert Lujo

  4. 0

    Yo recuerdo tener que meterse con este mucho para conseguir que funcione. En mi .bash_profile en un sistema que ejecuta Oracle XE, tengo:

    export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
    export SID=XE
    export LD_LIBRARY_PATH=$ORACLE_HOME:$ORACLE_HOME/lib
    export PATH=$PATH:$ORACLE_HOME/bin

    OriginalEl autor Jonathon Reinhart

  5. -1

    Tal vez usted puede copiar todos los archivos con ‘.dll de extensión a la ruta de instalación de Python like ‘%python_home%\Lib\site-packages’.

    OriginalEl autor Yongxiang Cui

Dejar respuesta

Please enter your comment!
Please enter your name here