sql >> Database teknologi >  >> RDS >> Oracle

cx oracle ImportError

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.



  1. Det indre af MED KRYPTERING

  2. Sådan identificerer du PostgreSQL-ydelsesproblemer med langsomme forespørgsler

  3. Vores mest populære database blogindlæg i 2017

  4. Android:NullPointerException Kan ikke indlæse database til listevisning i et fragment