Maison  >  Article  >  développement back-end  >  Erreurs et solutions rencontrées lors de l'installation de cx_Oracle

Erreurs et solutions rencontrées lors de l'installation de cx_Oracle

Y2J
Y2Joriginal
2017-05-08 16:51:103116parcourir

Cet article présente principalement les problèmes courants et les solutions pour l'installation du module cx_Oracle en Python. Il donne des exemples et analyse les problèmes courants, les solutions et les précautions associées pour l'installation du module cx_Oracle en Python sur la plateforme Windows et la plateforme Linux Friends. besoin peut s'y référer

Les exemples de cet article décrivent les problèmes courants et les solutions pour l'installation du module cx_Oracle en Python. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Lors de l'installation ou de l'utilisation de cx_Oracle, vous devez utiliser la bibliothèque de liens Oracle, telle que libclntsh.so.10.1, sinon il y aura divers messages d'erreur .

Vous pouvez obtenir cette bibliothèque de liens en installant Oracle Instant Client pour éviter d'installer des centaines de mégaoctets d'Oracle Client.

Adresse de téléchargement du logiciel :

Page d'accueil de cx_Oracle : cx-oracle.sourceforge.net/
Téléchargement des bibliothèques de liens Oracle nécessaires Adresse : www.oracle.com/technology/software/tech/oci/instantclient/index.html

Erreurs courantes et solutions :

Installation binaire 1.win32

Après l'installation de cx_Oracle-5.0-10g.win32-py2.6.msi sous Windows, lors de l'importation, il signale que la DLL est en cours de chargement. L'échec l'erreur est la suivante :

IDLE 2.6.1

>>> import cx_Oracle
Traceback (most recent call last):
 File "<pyshell#0>", line 1, in <module>
  import cx_Oracle
ImportError: DLL load failed: 找不到指定的程序。

Solution :

Télécharger instantclient-basic-win32- depuis le site Oracle 10.2 .0.4.zip, après décompression, copiez le fichier oci.dll dans Lib/site-packages dans le répertoire d'installation de Python, tel que C:/Python26/Lib/site-packages

2. Installation binaire sous Linux

Sous linux_x86_64, une erreur est signalée lors de l'installation de cx_Oracle-5.0.1-10g-py24-1.x86_64.rpm.

[root@BJ-UPDATE-01 ~]# rpm -ivh cx_Oracle-5.0.1-10g-py24-1.x86_64.rpm
error: Failed dependencies:
    libclntsh.so.10.1()(64bit) is needed by cx_Oracle-5.0.1-1.x86_64

Solution :

Référez-vous à cx-oracle.sourceforge.net/BUILD.txt

Téléchargez basic-10.2 depuis le site Oracle . 0.4.0-linux-x86_64.zip dans le répertoire /opt et décompressez-le, vous verrez libclntsh.so.10.1 dans le répertoire /opt/instantclient_10_2

Définir les variables d'environnement

vi /root/.bash_profile

Ajoutez les deux lignes suivantes :

export ORACLE_HOME=/opt/instantclient_10_2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME

Exécutez source /root/.bash_profile pour que les modifications prennent effet

Créez un lien symbolique vers cette bibliothèque de liens

cd $ORACLE_HOME
ln -s libclntsh.so.x.x libclntsh.so

Réinstaller cx_Oracle

Attention à ajouter le paramètre --nodeps, sinon l'erreur ci-dessus sera signalée

[root@BJ-UPDATE-01 ~]# rpm -ivh --nodeps cx_Oracle-5.0.1-10g-py24-1.x86_64.rpm
#5.0.3版本不用加--nodeps参数

3. Installation du code source sous Linux

Définissez les variables d'environnement et les liens symboliques comme ci-dessus Pour installer le code source sous linux_x86_64, exécutez python setup.py build lors de la compilation. Le message d'erreur est le suivant :

Connection.c:1169 : Avertissement : l'instruction ne fonctionne pas

Connection.c:1171 : Erreur : 'udt_Connection ' n'a aucun membre nommé 'environment'
Connection.c :1172 : Avertissement : Conversion entre types de pointeurs incompatibles lors du passage de l'argument 1 (appartenant à 'Environment_CheckForError')
Connection.c:1172 : Avertissement : Conversion entre pointeur incompatible types lors du passage de l'argument 2 (appartenant à 'Environment_CheckForError') Conversion entre
Connection.c:1172 : Erreur : trop d'arguments fournis à la
fonction 'Environment_CheckForError' Connection.c:1176 : Erreur : 'udt_Connection' n'a pas de nom '
sessionHandle' membre

Solution :

Cette erreur ne se produit pas dans la version 5.0.3. notez qu'il doit y avoir un répertoire

include sous ORACLE_HOME , ce répertoire doit contenir les fichiers sources requis pour la compilation. Les fichiers sources ne sont pas inclus dans Oracle Instant Client. Je l'ai copié depuis le répertoire D:/oracle/product/10.2.0/client_1/oci/include sur le client Windows.

Erreur 4.import

>>> import cx_Oracle
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
ImportError: /usr/lib/oracle/10.2.0.4/client64//lib/libnnz10.so: cannot restore segment prot after reloc: Permission denied
>>> import cx_Oracle
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
ImportError: /usr/lib/oracle/10.2.0.4/client64//lib/libclntsh.so.10.1: cannot restore segment prot after reloc: Permission denied
>>> import cx_Oracle
>>>
Cela est dû aux limitations de SELinux. Exécutez la commande suivante pour annuler la limitation :

chcon -t texrel_shlib_t cd $ORACLE_HOME/libnnz10.so
chcon -t texrel_shlib_t cd $ORACLE_HOME/libclntsh.so.10.1

5. Erreur d'exécution

Traceback (most recent call last):
 File "oracle_conn.py", line 9, in ?
  connection = cx_Oracle.Connection(u"oracle/oracle123@CCIP")
cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle
C'est toujours une limitation de SELinux sur désactivé

Désactivez selinux :

Exécutez la commande : vim /etc/selinux/config

Changez selinux=enforcing ou permissive en désactivé

Exécutez la commande : setenforce 0

6. Il y a un problème avec le package d'installation UNICODE

[Recommandations associées]
Traceback (most recent call last):
 File "./oracle_conn.py", line 22, in ?
  folderIds=cursor.fetchmany(10)
cx_Oracle.DatabaseError: OCI-22061: Message 22061 not found; No message file for product=RDBMS, facility=OCI; arguments: [T

1

Python. tutoriel vidéo gratuit

2.

Application de Python en science des données

3

Tutoriel d'introduction de base à Python

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn