installer CX oracle pour python

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 (tutoriel suivi dans le lien suivant ici).

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

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

sudo easy_install cx_oracle

Mais je continue à obtenir ce qui suit erreur:

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

Une idée de ce que j'ai manqué ici?

31
demandé sur Tshepang 2010-11-29 22:55:28

8 réponses

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.

Dans mon cas, , la seule variable env j'ai besoin est de LD_LIBRARY_PATH, donc j'ai fait:

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

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

10
répondu Tshepang 2012-04-08 23:39:49

La manière alternative, qui ne nécessite pas de RPM. Vous devez être root.

  1. Dépendances

    Installez les paquets suivants:

    apt-get install python-dev build-essential libaio1
    
  2. Télécharger Éphémère Client pour Linux x86-64

    Téléchargez les fichiers suivants depuis le site de téléchargement D'Oracle :

    la prévisualisation des fichiers

  3. Extraire les fichiers zip

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

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

    Créez un fichier dans /etc/profile.d/oracle.sh qui inclut

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

    Créez un fichier dans /etc/ld.so.conf.d/oracle.conf qui inclut

    /opt/ora/instantclient_11_2
    

    Exécutez la commande suivante

    sudo ldconfig
    

    Remarque: 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

63
répondu Burhan Khalid 2016-10-31 15:38:44

Thx Burhan Khalid, j'ai négligé votre citation "vous devez être root", mais j'ai trouvé le chemin quand vous n'êtes pas la racine ici.

, 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
4
répondu LuciusAgarthy 2013-09-11 12:01:26

Ce qui suit a fonctionné pour moi, à la fois sur mac et Linux. Cette commande doit 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

Notez que l'option --pre est destinée au développement et à la pré-version du pilote Oracle. À partir de cette publication, Il était saisissant cx_Oracle-6.0rc1.tar.gz, ce qui était nécessaire. (J'utilise Python 3.6)

4
répondu Mike Chirico 2017-06-27 20:04:15

Je pense que c'est peut-être le sudo n'a pas accès à get ORACLE_HOME.Vous pouvez faire comme ceci.

Sudo visudo

Modifier le texte, ajouter

Valeurs par défaut env_keep + = "ORACLE_HOME"

Puis

Sudo python setup.py construire installer

2
répondu TonyCoolZhu 2013-10-09 07:21:08

Merci Burhan Khalid. Vos conseils pour faire un lien souple font que mon installation fonctionne enfin.

Pour récapituler:

  1. Vous avez besoin à la fois de la version de base et de la version SDK de instant client

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

  3. vous devez créer un lien logiciel (ln-s libclntsh. so. 12. 1 libclntsh.so dans mon cas)

Rien de tout cela n'est documenté nulle part, ce qui est assez incroyable et assez frustrant. J'ai passé plus de 3 heures hier avec des builds échoués parce que je ne savais pas créer un lien logiciel.

2
répondu user3520634 2017-03-30 16:50:39

Vous pouvez également installer le module cx_Oracle sans le PIP en suivant les étapes suivantes

  1. Téléchargez la source à partir d'ici https://pypi.python.org/pypi/cx_Oracle [cx_Oracle-6.1.tar.gz]
  2. Extraire le tar 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 le module

    Python setup.py construire

  5. Installer le module

    Python setup.py installer

1
répondu Zeus 2018-01-15 18:55:13

Cette juste a fonctionné pour moi sur Ubuntu 16:

Télécharger ('instantclient-de base-linux.x64-12.2.0.1.0.zip' et 'instantclient-sdk-linux.x64-12.2.0.1.0.zip') à partir du site Web Oracle, puis faire le script suivant (vous pouvez faire pièce par pièce et je l'ai fait en tant que 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...)

Vos scripts python sont maintenant prêts à utiliser 'cx_Oracle'... Amusez-vous bien!

0
répondu Joe 2018-03-28 20:56:35