2010-11-29 20 views
30

Estoy en Debian 5, he estado tratando de 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).install cx_oracle para python

Entonces, he utilizado los scripts en /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin para poblar las variables de entorno como PATH, ORACLE_HOME y NLS_LANG.

vez, esto se terminó, traté de correr:

sudo easy_install cx_oracle 

pero aparece 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 me perdí aquí?

+0

¿Qué 'echo $ ORACLE_HOME' de salida? –

+0

$ ORACLE_HOME está configurado para /usr/lib/oracle/xe/app/oracle/product/10.2.0/client –

Respuesta

10

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

In my case, la única variable de entorno 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 variable de ruta será /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib.

59

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

  1. Dependencias

    instalar los siguientes paquetes:

    apt-get install python-dev build-essential libaio1 
    
  2. Descargar cliente instantáneo para Linux x86-64

    Descarga los siguientes archivos de Oracle de download site:

    files preview

  3. extraer los archivos zip

    descomprimir los archivos zip descargado en un directorio, estoy usando:

    /opt/ora/ 
    
  4. Añadir variables de entorno

    crear un archivo en /etc/profile.d/oracle.sh que incluye

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

    crear un archivo en /etc/ld.so.conf.d/oracle.conf que incluye

    /opt/ora/instantclient_11_2 
    

    ejecute el siguiente comando

    sudo ldconfig 
    

    Nota: es posible que tenga que reiniciar para aplicar configuraciones

  5. Crea un enlace simbólico

    cd $ORACLE_HOME 
    ln -s libclntsh.so.11.1 libclntsh.so 
    
  6. instalar el paquete python cx_Oracle

    • Puede instalar usando pip

      pip install cx_Oracle 
      
    • O instalar manualmente

      Descargue el cx_Oracle source zip que corresponde con su versión de Python y Oracle. A continuación, expanda el archivo, y se ejecuta desde el directorio extraído:

      python setup.py build 
      python setup.py install 
      
+1

Esto podría estar fuera de tema ya que lo estoy compilando en Mac OS X 10.9.2 y finalmente lo tengo funcionando . Además de los consejos de Burhan en 1-7 para establecer variables de entorno para las rutas de compilación y los enlaces simbólicos, parece que los archivos dylib de Oracle tienen * rutas de enlace * codificadas *. Así que este artículo ayuda un poco: http://caseymorford.com/2014/04/17/installing-oci8-with-mamp-pro/ para TL; DR, necesita crear otros dos enlaces simbólicos para resolver los errores de dlopen() . De lo contrario, estamos bien! – Devy

+0

gracias por la respuesta. +1 – anvd

+0

¡Realmente funciona! – Gecko

4

Thx Burhan Khalid, pasé por alto su "Necesita ser root" cita, pero no encontró el camino cuando no la está root here.

En el punto 7 es necesario utilizar:

sudo env ORACLE_HOME=$ORACLE_HOME python setup.py install 

O

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

esto me salvó el día. Gracias – Regenschein

2

creo que puede ser el sudo no tiene acceso para obtener ORACLE_HOME.You puede hacer de esta manera.

sudo visudo

modifique el texto añadir

Defaults env_keep += "ORACLE_HOME"

continuación

sudo python setup.py build install

2

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

Para recapitular:

  1. Es necesario tanto en la versión básica y la versión del SDK del cliente instantánea

  2. Es necesario configurar tanto LD_LIBRARY_PATH y ORACLE_HOME

  3. lo necesario para crear un suave link (ln -s libclntsh.so.12.1 libclntsh.so en mi caso)

Nada de esto es docu en cualquier lugar, 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.

3

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 

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

1

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

  1. descargar el código fuente desde aquí https://pypi.python.org/pypi/cx_Oracle [cx_Oracle-6.1.tar.gz]
  2. Extraer 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. Construir el módulo de configuración de pitón

    .py construir

  5. instalar el módulo

    python setup.py install