Dette er relateret til systemintegritetsbeskyttelsesændringerne (SIP) i El Capitan, som blandt andet forhindrer, at DYLD_LIBRARY_PATH nedarves af affødte processer.
Du kan ændre cx_Oracle.so
bibliotek for at bruge den faktiske sti til Oracle-klientbiblioteket i stedet for den søgte sti, der ikke længere virker; sørg for at du har ORACLE_HOME
stadig indstillet til at pege på din faktiske øjeblikkelige klientplacering, og bemærk også, at den nøjagtige sti rapporteret af ImportError
skal bruges - 3071542110
værdien kan variere afhængigt af den version/bygning af Instant Client, du har installeret:
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
... men så kan biblioteket ikke finde en anden 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
Så du skal også ændre det bibliotek, hvilket du måske er mindre komfortabel med:
install_name_tool -change \
/ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib \
$ORACLE_HOME/libnnz11.dylib \
$ORACLE_HOME/libclntsh.dylib.11.1
Afhængigt af den nøjagtige klientversion/bygning skal du muligvis gøre filen skrivbar, før du kører den kommando, med:
chmod 755 $ORACLE_HOME/libclntsh.dylib.11.1
Med disse ændringer kan jeg køre cx_Oracle
test på El Capitan.
Mere om install_name_change
her.
Det ser ud til, at 12c-instant-klienten er blevet bygget på en måde, der undgår dette problem, så det er lettere at opgradere til det end at hacke rundt i 11g-filer.