Ciò è correlato alle modifiche della protezione dell'integrità del sistema (SIP) in El Capitan, che tra le altre cose impedisce che DYLD_LIBRARY_PATH venga ereditato dai processi generati.
Puoi modificare cx_Oracle.so
libreria per utilizzare il percorso effettivo della libreria client Oracle invece del percorso cercato che non funziona più; assicurati di avere ORACLE_HOME
ancora impostato per puntare alla posizione effettiva del tuo client istantaneo e tieni anche presente che il percorso esatto riportato da ImportError
dovrebbe essere utilizzato - il 3071542110
il valore può variare a seconda della versione/build di Instant Client che hai installato:
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
... ma poi quella libreria non riesce a trovarne un'altra 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
Quindi dovresti cambiare anche quella libreria, con la quale potresti essere meno a tuo agio:
install_name_tool -change \
/ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib \
$ORACLE_HOME/libnnz11.dylib \
$ORACLE_HOME/libclntsh.dylib.11.1
A seconda dell'esatta versione/build del client, potresti dover rendere il file scrivibile prima di eseguire quel comando, con:
chmod 755 $ORACLE_HOME/libclntsh.dylib.11.1
Con queste modifiche posso eseguire cx_Oracle
prove su El Capitan.
Maggiori informazioni su install_name_change
qui.
Sembra che il client istantaneo 12c sia stato creato in modo da evitare questo problema, quindi l'aggiornamento a quello sarà più semplice che hackerare i file 11g.