sql >> Databáze >  >> RDS >> Oracle

cx oracle ImportError

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ů.



  1. Průvodce návrhem databáze pro online nákupní košík v MySQL

  2. „Závažná chyba interního připojení“ při provádění nativně kompilované uložené procedury v SQL Server 2019 (známá chyba)

  3. Hierarchické dotazy v MySQL

  4. Jak zkontrolovat, zda na serveru SQL existuje omezení?