Estoy tratando de configurar cx_Oracle para trabajar con Python.

Estoy usando

  • Python 2.7.10, 64-bit
  • cx_Oracle la versión 6.0.2
  • MacOS Sierra 10.12.6

Puedo configurar las siguientes variables de entorno:

export ORACLE_HOME="/Volumes/DATA/Programs/PY/instantclient_12_1"
export DYLD_LIBRARY_PATH="$ORACLE_HOME:$DYLD_LIBRARY_PATH"
export LD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$PATH:$ORACLE_HOME
export ORACLE_SID=edocd
export TNS_ADMIN=/Volumes/DATA/Programs/PY/instantclient_12_1/network/admin
export TWO_TASK=${ORACLE_SID}

Aquí es lo que he intentado:

  1. Instalado como Administrador
  2. sudo python setup.py build
  3. sudo python setup.py install

Cuando traté de ejecutar un script sencillo para comprobar la conexión de Oracle yo era capaz de conectar con éxito a través de sqlplus.

Aquí está el error de recibo:

cx_Oracle.DatabaseError: DPI-1047: 64 bits del Cliente de Oracle de la biblioteca no se puede cargar: «dlopen(libclntsh.dylib, 1): la imagen no encontrada». Ver https://oracle.github.io/odpi/doc/installation.html#macos para ayudar a

Hizo usted siga las instrucciones que se encuentran en el enlace que se encuentra en el mensaje de error?

OriginalEl autor samarth saxena | 2017-09-07

5 Comentarios

  1. 1

    Mi solución para Ubuntu 16.04 (64 bits)

    Un tl;dr: de la guía oficial:

    1) Descargar el instantclient-basic-linux.x64-12.2.0.1.0.zip

    2) Extraer a /opt/oracle directory:

    $ sudo mkdir -p /opt/oracle
    $ cd /opt/oracle
    $ unzip ~/Downloads/instantclient-basic-linux.x64-12.2.0.1.0.zip

    3) Instalar libaio paquete

    $ sudo apt-get install libaio1

    4) Editar el oracle-instantclient.conf archivo así:

    $ sudo sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf"
    $ sudo ldconfig
    Gracias por compartir, pero la pregunta era acerca de macOS. La solución es diferente a la de Linux.

    OriginalEl autor Serzhan Akhmetov

  2. 0

    link ${your_instantclient_folder} -> ${oracle_home}/lib

    cd ${ORACLE_HOME};
    unzip instantclient-basic-macos.x64-x.x.x.zip
    ln -s instantclient_X_X lib

    referencia

    OriginalEl autor namiha

  3. 0

    Para mí

    source ~/.profile

    fue el omitido el paso durante la instalación.

    OriginalEl autor Kishor Pawar

  4. -1

    Instalar cx_Oracle en Virtualenv

    Condiciones previas.

    Python 2.7.10, 64-bit
    cx_Oracle version 6.0.2
    MacOS Sierra 10.12.6

    Cliente de Oracle instalado por instrucciones https://oracle.github.io/odpi/doc/installation.html#macos en

    /opt/oracle/instantclient_12_1

    Añadir a tu ~/.bash_profile:

    export ORACLE_HOME=/opt/oracle/instantclient_12_1
    export DYLD_LIBRARY_PATH=$ORACLE_HOME
    export LD_LIBRARY_PATH=$ORACLE_HOME
    export PATH=$ORACLE_HOME:$PATH

    Intentar Virtualenv

    1. virtualenv ~/venv
    2. source ~/venv/bin/activate
    3. pip install IPython (Optional. I prefer IPython)
    4. pip install cx_Oracle
    
    (venv) ~$ pip install cx_Oracle
    Collecting cx_Oracle
    Installing collected packages: cx-Oracle
    Successfully installed cx-Oracle-6.0.2
    
    (venv) ~$ IPython
    Python 2.7.10 (default, Feb  7 2017, 00:08:15) 
    Type "copyright", "credits" or "license" for more information.
    
    IPython 5.4.1 -- An enhanced Interactive Python.
    ?         -> Introduction and overview of IPython's features.
    %quickref -> Quick reference.
    help      -> Python's own help system.
    object?   -> Details about 'object', use 'object??' for extra details.
    
    In [1]: import cx_Oracle
    
    In [2]: con = cx_Oracle.connect('system/[email protected]/orcl')
    
    In [3]: cur = con.cursor()
       ...: 
       ...: select = ("SELECT * FROM tbl1")
       ...: cur.execute(select)
       ...: 
    Out[3]: <cx_Oracle.Cursor on <cx_Oracle.Connection to [email protected]/orcl>>
    
    In [4]: for row in cur:
       ...:     print(row)
       ...:     
    Con las actuales versiones de macOS, SIP dejará de DYLD_LIBRARY_PATH ser leído de forma subshells, así que en realidad no ayuda y no necesita ser ajustado. LD_LIBRARY_PATH es redundante en macOS. Y con Oracle Instant Client (y cx_Oracle 6), no debe establecer ORACLE_HOME.

    OriginalEl autor AlexZ

  5. -1

    Para ampliar @anthony-tuininga la respuesta: la dirección URL en el mensaje de error tiene los pasos a seguir. Ver https://oracle.github.io/odpi/doc/installation.html#macos Específicamente asegúrese de que las bibliotecas de cliente de Oracle en ~/lib o /usr/local/lib.
    No establecer DYLD_LIBRARY_PATH o LD_LIBRARY_PATH o ORACLE_HOME.

    Esto realmente ayudó. [Ubuntu 16.04 64bit | PyCharm 2017.3 CE]

    OriginalEl autor Christopher Jones

Dejar respuesta

Please enter your comment!
Please enter your name here