2010-11-29 6 views
30

Je suis sur Debian 5, j'ai essayé d'installer le module cx_oracle pour python sans succès. Tout d'abord, j'ai installé Oracle-xe-client et sa dépendance (suivi tutoriel dans le lien suivant here).installer cx_oracle pour python

Ensuite, je les scripts dans /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin pour remplir les variables d'environnement telles que PATH, ORACLE_HOME et NLS_LANG.

Une fois, cela a été terminé, j'ai essayé de courir:

sudo easy_install cx_oracle 

Mais je continue à obtenir l'erreur suivante:

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 

Toute idée de ce que je manqué ici?

+0

Qu'est-'echo sortie ORACLE_HOME' $? –

+0

$ ORACLE_HOME est défini pour /usr/lib/oracle/xe/app/oracle/product/10.2.0/client –

Répondre

10

Je vous recommande de récupérer les fichiers rpm et de les installer avec alien. De cette façon, vous pouvez plus tard exécuter apt-get purge no-longer-needed.

In my case, la seule variable d'env je avais besoin est LD_LIBRARY_PATH, alors je l'ai:

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

Je suppose que dans votre cas cette variable de chemin sera /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib.

59

L'alternative, qui ne nécessite pas de RPM. Vous devez être root.

  1. dépendances

    Installez les packages suivants:

    apt-get install python-dev build-essential libaio1 
    
  2. Télécharger Instant Client pour Linux x86-64

    Télécharger les fichiers suivants à partir d'Oracle download site:

    files preview

  3. Extrait les fichiers zip

    Décompressez les fichiers zip téléchargés dans un répertoire, j'utilise:

    /opt/ora/ 
    
  4. Ajouter des variables d'environnement

    Créer un fichier dans /etc/profile.d/oracle.sh qui comprend

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

    Créer un fichier dans /etc/ld.so.conf.d/oracle.conf qui comprend

    /opt/ora/instantclient_11_2 
    

    Exécutez la commande suivante

    sudo ldconfig 
    

    Note: vous devrez peut-être redémarrer pour appliquer les paramètres

  5. Créer un lien symbolique

    cd $ORACLE_HOME 
    ln -s libclntsh.so.11.1 libclntsh.so 
    
  6. Installer cx_Oracle paquet python

    • Vous pouvez installer à l'aide pip

      pip install cx_Oracle 
      
    • Ou installer manuellement

      Téléchargez le cx_Oracle source zip correspondant à votre version Python et Oracle. Ensuite, développez l'archive, et exécuté à partir du répertoire extrait:

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

Cela peut être hors sujet car je le construis sur Mac OS X 10.9.2 et finalement je l'ai fait fonctionner . Outre les astuces de Burhan sur 1-7 pour définir les variables d'environnement pour les chemins de génération et les liens symboliques, il semble que les fichiers dylib d'Oracle ont des chemins de liens * codés en dur * !!! Donc, cet article aide un peu: http://caseymorford.com/2014/04/17/installing-oci8-with-mamp-pro/ pour TL; DR, vous devez créer deux autres liens symboliques pour résoudre les erreurs dlopen() . Sinon, nous sommes bons! – Devy

+0

merci pour la réponse. +1 – anvd

+0

Fonctionne réellement! – Gecko

4

Thx Burhan Khalid, je négligé votre « Vous devez être root » citation, mais trouvé le chemin quand vous n'êtes pas le racine here.

Au point 7, vous devez utiliser:

sudo env ORACLE_HOME=$ORACLE_HOME python setup.py install 

Ou

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

cela a sauvé ma journée. THX – Regenschein

2

Je pense qu'il peut être n'a pas accès sudo pour obtenir ORACLE_HOME.You peut faire comme ça.

sudo visudo

modifier le texte ajouter

Defaults env_keep += "ORACLE_HOME"

puis

sudo python setup.py build install

2

Merci Burhan Khalid. Votre conseil pour faire un lien doux fait que mon installation fonctionne enfin.

Pour récapituler:

  1. Vous avez besoin à la fois la version de base et la version du SDK du client instantané

  2. Vous devez définir à la fois LD_LIBRARY_PATH et ORACLE_HOME

  3. Vous devez créer un doux link (ln -s libclntsh.so.12.1 libclntsh.so dans mon cas)

Rien de tout cela est docu menté partout, ce qui est tout à fait incroyable et plutôt frustrant. J'ai passé plus de 3 heures hier avec des builds ratés parce que je ne savais pas créer un lien logiciel.

3

Ce qui suit a fonctionné pour moi, à la fois sur Mac et Linux. Cette commande unique devrait télécharger les fichiers supplémentaires nécessaires, sans avoir besoin de définir des variables d'environnement.

python -m pip install cx_Oracle --pre 

Remarque, l'option --Pré est pour le développement et pré-version du pilote Oracle. À partir de cet affichage, il saisissait cx_Oracle-6.0rc1.tar.gz, ce qui était nécessaire. (J'utilise python 3.6)

1

Vous pouvez aussi installer le module cx_Oracle sans PIP en procédant comme suit

  1. Téléchargez la source d'ici https://pypi.python.org/pypi/cx_Oracle [cx_Oracle-6.1.tar.gz]
  2. Extraire le goudron en utilisant les commandes suivantes (Linux)

    gunzip cx_Oracle-6.1.tar.gz

    tar -xf cx_Oracle-6.1.tar

  3. cd cx_Oracle-6.1

  4. Construire la configuration Module

    python.py construire

  5. Installez le module

    python setup.py install