これは、El Capitanのシステム整合性保護(SIP)の変更に関連しており、特にDYLD_LIBRARY_PATHが生成されたプロセスに継承されるのを防ぎます。
cx_Oracle.so
を変更できます ライブラリは、機能しなくなった検索パスの代わりに、Oracleクライアントライブラリへの実際のパスを使用します。 ORACLE_HOME
があることを確認してください 実際のインスタントクライアントの場所を指すように設定されたままであり、ImportError
によって報告された正確なパスにも注意してください 使用する必要があります-3071542110
値は、インストールしたInstant Clientのバージョン/ビルドによって異なる場合があります:
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
...しかし、そのライブラリは別の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
そのため、そのライブラリも変更する必要がありますが、これにはあまり慣れていない可能性があります。
install_name_tool -change \
/ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib \
$ORACLE_HOME/libnnz11.dylib \
$ORACLE_HOME/libclntsh.dylib.11.1
正確なクライアントのバージョン/ビルドによっては、次のコマンドを実行する前に、ファイルを書き込み可能にする必要がある場合があります。
chmod 755 $ORACLE_HOME/libclntsh.dylib.11.1
これらの変更により、cx_Oracle
を実行できます。 エルキャピタンでのテスト。
install_name_change
の詳細 ここ。
12cインスタントクライアントはこの問題を回避するように構築されているようです。そのため、11gファイルをハッキングするよりも簡単にアップグレードできます。