Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

cx oracle ImportError

Điều này liên quan đến các thay đổi về bảo vệ toàn vẹn hệ thống (SIP) trong El Capitan, trong số những thứ khác ngăn cản DYLD_LIBRARY_PATH kế thừa bởi các quy trình đã tạo.

Bạn có thể sửa đổi cx_Oracle.so thư viện để sử dụng đường dẫn thực tế đến thư viện máy khách Oracle thay vì đường dẫn đã tìm kiếm không còn hoạt động; đảm bảo rằng bạn có ORACLE_HOME vẫn được đặt để trỏ đến vị trí ứng dụng khách tức thì thực tế của bạn và cũng lưu ý rằng đường dẫn chính xác được báo cáo bởi ImportError nên được sử dụng - 3071542110 giá trị có thể thay đổi tùy thuộc vào phiên bản / bản dựng của Ứng dụng khách tức thì mà bạn đã cài đặt:

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

... nhưng sau đó thư viện đó không thể tìm thấy một Oracle khác:

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

Vì vậy, bạn cũng cần phải thay đổi thư viện đó, mà bạn có thể không thoải mái với:

install_name_tool -change \
  /ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib \
  $ORACLE_HOME/libnnz11.dylib \
  $ORACLE_HOME/libclntsh.dylib.11.1

Tùy thuộc vào phiên bản / phiên bản ứng dụng khách chính xác, bạn có thể cần làm cho tệp có thể ghi trước khi chạy lệnh đó, với:

chmod 755 $ORACLE_HOME/libclntsh.dylib.11.1

Với những thay đổi đó, tôi có thể chạy cx_Oracle kiểm tra trên El Capitan.

Tìm hiểu thêm về install_name_change tại đây.

Có vẻ như ứng dụng khách tức thời 12c đã được xây dựng theo cách để tránh vấn đề này, vì vậy việc nâng cấp lên ứng dụng đó sẽ đơn giản hơn so với việc hack xung quanh tệp int he 11g.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để khắc phục lỗi này:SQL92 không được hỗ trợ?

  2. Làm thế nào để thay đổi giá trị âm thành dương trong Oracle?

  3. Hàm NLS_COLLATION_ID () trong Oracle

  4. ORA-12154 không thể phân giải mã nhận dạng kết nối được chỉ định

  5. Làm cách nào để xuất kết quả truy vấn sang Excel trong Oracle SQL Developer?