To souvisí se změnami ochrany integrity systému (SIP) v El Capitan, které mimo jiné brání DYLD_LIBRARY_PATH zdědit vytvořenými procesy.
Můžete upravit cx_Oracle.so
knihovna k použití skutečné cesty ke klientské knihovně Oracle namísto hledané cesty, která již nefunguje; ujistěte se, že máte ORACLE_HOME
stále nastaven tak, aby ukazoval na vaši skutečnou polohu okamžitého klienta, a také si všimněte, že přesná cesta hlášená ImportError
měl by být použit - 3071542110
hodnota se může lišit v závislosti na verzi/sestavení Instant Client, kterou jste nainstalovali:
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
... ale pak tato knihovna nemůže najít jinou 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
Takže byste museli změnit i tuto knihovnu, což vám může být méně příjemné:
install_name_tool -change \
/ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib \
$ORACLE_HOME/libnnz11.dylib \
$ORACLE_HOME/libclntsh.dylib.11.1
V závislosti na přesné verzi/sestavení klienta budete možná muset před spuštěním příkazu nastavit soubor tak, aby bylo možné zapisovat pomocí:
chmod 755 $ORACLE_HOME/libclntsh.dylib.11.1
S těmito změnami mohu spustit cx_Oracle
testy na El Capitan.
Více na install_name_change
zde.
Vypadá to, že instantní klient 12c byl vytvořen způsobem, který tomuto problému předchází, takže upgrade na něj bude jednodušší než nabourávání se do 11g souborů.