Maison >développement back-end >Tutoriel Python >Erreurs et solutions rencontrées lors de l'installation de cx_Oracle
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 pasConnection.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épertoireErreur 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 handleC'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 gratuitApplication de Python en science des donnéesTutoriel d'introduction de base à PythonCe 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!