Oracle
 sql >> Base de données >  >> RDS >> Oracle

cx oracle Erreur d'importation

Ceci est lié aux modifications de la protection de l'intégrité du système (SIP) dans El Capitan, qui, entre autres, empêche l'héritage de DYLD_LIBRARY_PATH par les processus générés.

Vous pouvez modifier le cx_Oracle.so bibliothèque pour utiliser le chemin réel vers la bibliothèque client Oracle au lieu du chemin recherché qui ne fonctionne plus ; assurez-vous d'avoir ORACLE_HOME toujours défini pour pointer vers l'emplacement réel de votre client instantané, et notez également que le chemin exact signalé par ImportError doit être utilisé - le 3071542110 la valeur peut varier en fonction de la version/build d'Instant Client que vous avez installé :

export ORACLE_HOME=/usr/local/lib/share/oracle/installclient_11_2

install_name_tool -change \
  /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 \
  $ORACLE_HOME/libclntsh.dylib.11.1 \
  /Library/Python/2.7/site-packages/cx_Oracle.so

... mais cette bibliothèque ne peut pas en trouver une autre Oracle :

ImportError: dlopen(/Library/Python/2.7/site-packages/cx_Oracle.so, 2): Library not loaded: /ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib
  Referenced from: /usr/local/lib/share/oracle/installclient_11_2/libclntsh.dylib.11.1
  Reason: image not found

Vous devrez donc également modifier cette bibliothèque, ce avec quoi vous serez peut-être moins à l'aise :

install_name_tool -change \
  /ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib \
  $ORACLE_HOME/libnnz11.dylib \
  $ORACLE_HOME/libclntsh.dylib.11.1

Selon la version/construction exacte du client, vous devrez peut-être rendre le fichier accessible en écriture avant d'exécuter cette commande, avec :

chmod 755 $ORACLE_HOME/libclntsh.dylib.11.1

Avec ces changements, je peux exécuter le cx_Oracle tests sur El Capitan.

En savoir plus sur install_name_change ici.

Il semble que le client instantané 12c ait été construit de manière à éviter ce problème, donc la mise à niveau vers cela sera plus simple que de pirater les fichiers 11g.