web-dev-qa-db-fra.com

installez cx_Oracle pour python

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

Ensuite, j'ai utilisé les scripts de /usr/lib/Oracle/xe/app/Oracle/product/10.2.0/client/bin pour renseigner des variables d'environnement telles que PATH, Oracle_HOME et NLS_LANG.

Une fois cela terminé, j'ai essayé de lancer:

Sudo easy_install cx_Oracle

Mais je continue à avoir 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

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

31
Mo J. Mughrabi

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

Dans mon cas , la seule variable env dont j'avais besoin est LD_LIBRARY_PATH;

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.

10
Tshepang

La méthode alternative 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échargez les fichiers suivants à partir du site de téléchargement de Oracle :

     files preview

  3. Extraire 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éez 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éez un fichier dans /etc/ld.so.conf.d/Oracle.conf qui comprend

    /opt/ora/instantclient_11_2
    

    Exécuter 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. Install cx_Oracle package python

    • Vous pouvez installer avec pip 

      pip install cx_Oracle
      
    • Ou installez manuellement

      Téléchargez le fichier cx_Oracle source Zip qui correspond à votre version Python et Oracle. Développez ensuite l'archive et exécutez-la à partir du répertoire extrait:

      python setup.py build 
      python setup.py install
      
65
Burhan Khalid

Thx Burhan Khalid, j'ai oublié 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
LuciusAgarthy

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

python -m pip install cx_Oracle --pre

Remarque, l'option --pre est destinée au développement et à la pré-version du pilote Oracle. Au moment de cette publication, il récupérait cx_Oracle-6.0rc1.tar.gz, ce qui était nécessaire. (J'utilise Python 3.6)

4
Mike Chirico

Je pense que c'est peut-être que le Sudo n'a pas accès à Oracle_HOME. Vous pouvez faire comme ça.

Sudo visudo

modifier le texte ajouter 

Valeurs par défaut env_keep + = "Oracle_HOME" 

puis

Sudo python setup.py construire installer

2
TonyCoolZhu

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

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 symbolique (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. Hier, j'ai passé plus de 3 heures avec des versions en échec parce que je ne savais pas créer un lien souple.

2
user3520634

Sinon, vous pouvez installer le module cx_Oracle sans le PIP en procédant comme suit.

  1. Téléchargez le source ici https://pypi.python.org/pypi/cx_Oracle [Cx_Oracle-6.1.tar.gz]
  2. Extrayez le fichier 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

    construction de python.py

  5. Installer le module

    installation de python.py

1
Zeus

Cela a juste fonctionné pour moi Ubuntu 16:

Téléchargez ('instantclient-basic-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 exécutez le script suivant (vous pouvez faire morceau par morceau et j'ai fait comme une racine):

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' ... Enjoy!

0
Joe

Si vous essayez d'installer sous MAC, décompressez simplement le client Oracle que vous avez téléchargé et placez-le dans le dossier où vous avez écrit les scripts python. 

Il y a trop de problème de configuration des variables environnementales. Cela a fonctionné pour moi.

J'espère que cela t'aides.

Merci 

0
vikash prasad