Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

cx oracle ImportError

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tunggu Acara:mengubah ukuran deskriptor asinkron

  2. Bagaimana Mendapatkan BLOB dari File di PL/SQL?

  3. Apa perbedaan antara presisi dan skala?

  4. Bagaimana cara menggunakan kata kunci 'sebagai' untuk alias tabel di Oracle?

  5. Pisahkan string dengan spasi dan karakter sebagai pembatas di Oracle dengan regexp_substr