cx_oracle python oracle

instala cx_oracle para python



install cx_oracle (8)

Estoy en Debian 5, he intentado instalar el módulo cx_oracle para Python sin ningún éxito. Primero, instalé oracle-xe-client y su dependencia (seguí el tutorial en el siguiente enlace here ).

Luego, utilicé los scripts en /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin para rellenar variables de entorno como PATH, ORACLE_HOME y NLS_LANG.

Una vez que esto se completó, traté de ejecutar:

sudo easy_install cx_oracle

Pero sigo recibiendo el siguiente error:

Searching for cx-oracle Reading http://pypi.python.org/simple/cx_oracle/ Reading http://cx-oracle.sourceforge.net Reading http://starship.python.net/crew/atuining Best match: cx-Oracle 5.0.4 Downloading http://prdownloads.sourceforge.net/cx-oracle/cx_Oracle-5.0.4.tar.gz?download Processing cx_Oracle-5.0.4.tar.gz Running cx_Oracle-5.0.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-xsylvG/cx_Oracle-5.0.4/egg-dist-tmp-8KoqIx error: cannot locate an Oracle software installation

¿Alguna idea de lo que extrañé aquí?


Alternativamente, puede instalar el módulo cx_Oracle sin el PIP usando los siguientes pasos

  1. Descargue la fuente desde aquí https://pypi.python.org/pypi/cx_Oracle [cx_Oracle-6.1.tar.gz]
  2. Extraiga el alquitrán usando los siguientes comandos (Linux)

    gunzip cx_Oracle-6.1.tar.gz

    tar -xf cx_Oracle-6.1.tar

  3. cd cx_Oracle-6.1

  4. Construye el módulo

    python setup.py build

  5. Instalar el módulo

    instalación de python setup.py


Creo que es posible que el sudo no tenga acceso para obtener ORACLE_HOME. Puedes hacer esto.

sudo visudo

modificar el texto agregar

Valores predeterminados env_keep + = "ORACLE_HOME"

entonces

sudo python setup.py build install


Esto funcionó para mí en Ubuntu 16 :

Descargue (''instantclient-basic-linux.x64-12.2.0.1.0.zip'' y ''instantclient-sdk-linux.x64-12.2.0.1.0.zip'') desde el sitio web de Oracle y luego siga el script (puede hacer pieza por pieza y lo hice como ROOT):

apt-get install -y python-dev build-essential libaio1 mkdir -p /opt/ora/ cd /opt/ora/ ## Now put 2 ZIP files: # (''instantclient-basic-linux.x64-12.2.0.1.0.zip'' and ''instantclient-sdk-linux.x64-12.2.0.1.0.zip'') # into /opt/ora/ and unzip them -> both will be unzipped into 1 directory: /opt/ora/instantclient_12_2 rm -rf /etc/profile.d/oracle.sh echo "export ORACLE_HOME=/opt/ora/instantclient_12_2" >> /etc/profile.d/oracle.sh echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME" >> /etc/profile.d/oracle.sh chmod 777 /etc/profile.d/oracle.sh source /etc/profile.d/oracle.sh env | grep -i ora # This will check current ENVIRONMENT settings for Oracle rm -rf /etc/ld.so.conf.d/oracle.conf echo "/opt/ora/instantclient_12_2" >> /etc/ld.so.conf.d/oracle.conf ldconfig cd $ORACLE_HOME ls -lrth libclntsh* # This will show which version of ''libclntsh'' you have... --> needed for following line: ln -s libclntsh.so.12.1 libclntsh.so pip install cx_Oracle # Maybe not needed but I did it anyway (only pip install cx_Oracle without above steps did not work for me...)

Sus scripts de Python ahora están listos para usar ''cx_Oracle'' ... ¡Disfrútalo!


Gracias Burhan Khalid. Tu consejo para hacer un enlace suave hace que mi instalación finalmente funcione.

Recordar:

  1. Necesita la versión básica y la versión SDK del cliente instantáneo

  2. Debe establecer LD_LIBRARY_PATH y ORACLE_HOME

  3. Necesita crear un enlace suave (ln -s libclntsh.so.12.1 libclntsh.so en mi caso)

Nada de esto está documentado en ninguna parte, lo cual es bastante increíble y bastante frustrante. Pasé más de 3 horas ayer con compilaciones fallidas porque no sabía crear un enlace suave.


La forma alternativa, que no requiere RPM. Debes ser root

  1. Dependencias

    Instale los siguientes paquetes:

    apt-get install python-dev build-essential libaio1

  2. Descarga Instant Client para Linux x86-64

    Descargue los siguientes archivos del sitio de descarga de Oracle:

  3. Extrae los archivos zip

    Descomprime los archivos zip descargados en algún directorio, estoy usando:

    /opt/ora/

  4. Agregar variables de entorno

    Cree un archivo en /etc/profile.d/oracle.sh que incluya

    export ORACLE_HOME=/opt/ora/instantclient_11_2 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME

    Cree un archivo en /etc/ld.so.conf.d/oracle.conf que incluya

    /opt/ora/instantclient_11_2

    Ejecute el siguiente comando

    sudo ldconfig

    Nota: es posible que deba reiniciar para aplicar la configuración

  5. Crear un enlace simbólico

    cd $ORACLE_HOME ln -s libclntsh.so.11.1 libclntsh.so

  6. Instalar el paquete cx_Oracle python

    • Puede instalar usando pip

      pip install cx_Oracle

    • O instala manualmente

      Descargue el zip de origen de cx_Oracle que corresponde a su versión de Python y Oracle. A continuación, expanda el archivo y ejecútelo desde el directorio extraído:

      python setup.py build python setup.py install


Lo siguiente funcionó para mí, tanto en mac como en Linux. Este comando debería descargar los archivos adicionales necesarios, sin necesidad de establecer variables de entorno.

python -m pip install cx_Oracle --pre

Tenga en cuenta que la opción --pre es para el desarrollo y la versión preliminar del controlador de Oracle. A partir de esta publicación, estaba agarrando cx_Oracle-6.0rc1.tar.gz , que era necesario. (Estoy usando Python 3.6)


Te recomiendo que tomes los archivos rpm e los instales con alien. De esta forma, más adelante podrá ejecutar apt-get purge no-longer-needed .

En mi caso , la única variable env que necesitaba es LD_LIBRARY_PATH , así que lo hice:

echo export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib >> ~/.bashrc source ~/.bashrc

Supongo que en su caso esa variable de ruta será /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib .


Thx Burhan Khalid, pasé por alto tu cita de "Tienes que ser root", pero encontré el camino cuando no eres la raíz here .

En el punto 7 necesitas usar:

sudo env ORACLE_HOME=$ORACLE_HOME python setup.py install

O

sudo env ORACLE_HOME=/path/to/instantclient python setup.py install