CX Oracle: distutils.erreur.DistutilsSetupError: impossible de localiser les fichiers include D'Oracle
j'ai besoin d'installer cx_Oracle pour Python 2.5 sur Linux (Linux 2.6.18-371.1.2.el5 i686). J'ai installé Oracle client 10.2.0.4.
j'ai essayé de suivre:
1. Télécharger cx_Oracle tar.gz
http://sourceforge.net/projects/cx-oracle/files/
.
Je ne sais pas lesquelles des versions listées sont appropriées pour python 2.5 et Oracle client 10.2.0.4, alors essayez cx_Oracle-5.1.tar.gz. Déballé le goudron,
allez dans le dossier non empaqueté et lancez python setup.py installer. Je suis d'erreur:
Traceback (most recent call last):
File "setup.py", line 187, in <module>
raise DistutilsSetupError("cannot locate Oracle include files")
distutils.errors.DistutilsSetupError: cannot locate Oracle include files
.bash_profile j'ai placé oracle chemin d'accès:
export ORACLE_HOME=/usr/oracle/10.2.0.4/client
export PATH=$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
comment corriger une telle erreur, peut-être que j'ai besoin d'une autre version de cx_Oracle tar?
- exécuter pip install cx_Oracle. A reçu l'erreur:
Download / unpacking cx-Oracle
Cannot fetch index base URL https://pypi.python.org/simple/
Could not find any downloads that satisfy the requirement cx-Oracle
No distributions at all found for cx-Oracle
Quelqu'un pourrait-il me conseiller la bonne solution?
mise à Jour Après suggestion dans la réponse j'ai eu l'erreur suivante:
...
cx_Oracle.c:496: warning: passing argument 3 of âPyModule_AddIntConstantâ makes integer from pointer without a cast
cx_Oracle.c:497: error: âOCI_UCBTYPE_EXITâ undeclared (first use in this function)
cx_Oracle.c:497: warning: passing argument 3 of âPyModule_AddIntConstantâ makes integer from pointer without a cast
cx_Oracle.c:498: error: âOCI_UCBTYPE_REPLACEâ undeclared (first use in this function)
cx_Oracle.c:498: warning: passing argument 3 of âPyModule_AddIntConstantâ makes integer from pointer without a cast
error: command 'gcc' failed with exit status 1
4 réponses
quand vous courez setup.py il vérifiera l'un de ces dossiers sur votre ORACLE_HOME.
possibleIncludeDirs = ["rdbms/demo", "rdbms/public", "network/public",
"sdk/include"]
aussi le client instantané place parfois les fichiers include, tels que le oci.h, dans /usr/include/oracle//client, s'il n'y a pas de répertoire 'include' sous ORACLE_HOME, créez un lien symbolique vers celui-ci.
sudo ln -s /usr/include/oracle/11.2/client $ORACLE_HOME/include
on dirait que vous manquez le Client SDK
assurez-vous d'installer le sdk client instantané pour votre système D'exploitation.
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
Installer
oracle_client_basic
oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
utiliser pip install
python -m pip install cx_Oracle
ajout de ldconfig
- trouver l'emplacement de votre client, par exemple:
/u01/app/oracle/product/11.2.0/client_1/lib
vi /etc/ld.so.conf.d/oracle.conf
Ajouter cet emplacement:
/u01/app/oracle/product/11.2.0/client_1/lib
ldconfig
- trouver l'emplacement de votre client, par exemple:
import cx_oracle
assurez-vous que vous avez un sdk client présent dans votre chemin.
J'ai aussi dû ajouter ceci à mon .bash_rc
export DYLD_LIBRARY_PATH=$ORACLE_HOME
En plus de cela, Python 2.7 ne vient pas avec Python.h qui est disponible par défaut en Python 3.4. Je suggère donc aussi d'installer le paquet python-devel
yum install python-devel
Qui devrait résoudre le problème.