Hal ini terkait dengan perubahan system integrity protection (SIP) di El Capitan, yang antara lain mencegah DYLD_LIBRARY_PATH diwarisi oleh proses spawned.
Anda dapat memodifikasi cx_Oracle.so
perpustakaan untuk menggunakan jalur aktual ke perpustakaan klien Oracle alih-alih jalur yang dicari yang tidak lagi berfungsi; pastikan Anda memiliki ORACLE_HOME
masih disetel untuk menunjuk ke lokasi klien instan Anda yang sebenarnya, dan perhatikan juga bahwa jalur persisnya dilaporkan oleh ImportError
harus digunakan - 3071542110
nilainya dapat bervariasi tergantung pada versi/build Klien Instan yang telah Anda instal:
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
... tapi kemudian perpustakaan itu tidak dapat menemukan yang lain 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
Jadi, Anda juga perlu mengubah perpustakaan itu, yang mungkin membuat Anda kurang nyaman:
install_name_tool -change \
/ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib \
$ORACLE_HOME/libnnz11.dylib \
$ORACLE_HOME/libclntsh.dylib.11.1
Bergantung pada versi/build klien yang tepat, Anda mungkin perlu membuat file dapat ditulis sebelum menjalankan perintah itu, dengan:
chmod 755 $ORACLE_HOME/libclntsh.dylib.11.1
Dengan perubahan itu saya dapat menjalankan cx_Oracle
tes di El Capitan.
Selengkapnya tentang install_name_change
di sini.
Sepertinya klien instan 12c telah dibuat sedemikian rupa untuk menghindari masalah ini, jadi memutakhirkan ke itu akan lebih mudah daripada meretas file 11g di dalamnya.