Oracle
 sql >> Baza danych >  >> RDS >> Oracle

cx oracle ImportError

Jest to związane ze zmianami ochrony integralności systemu (SIP) w El Capitan, które między innymi zapobiegają dziedziczeniu DYLD_LIBRARY_PATH przez powstające procesy.

Możesz zmodyfikować cx_Oracle.so biblioteka do korzystania z rzeczywistej ścieżki do biblioteki klienta Oracle zamiast przeszukiwanej ścieżki, która już nie działa; upewnij się, że masz ORACLE_HOME nadal ustawiony tak, aby wskazywał na Twoją rzeczywistą lokalizację klienta błyskawicznego, a także zauważ, że dokładna ścieżka zgłaszana przez ImportError należy użyć - 3071542110 wartość może się różnić w zależności od wersji/kompilacji zainstalowanego klienta błyskawicznego:

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 wtedy ta biblioteka nie może znaleźć innej 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

Musisz więc zmienić także tę bibliotekę, co może być mniej wygodne:

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

W zależności od dokładnej wersji/kompilacji klienta może być konieczne, aby plik był zapisywalny przed uruchomieniem tego polecenia, za pomocą:

chmod 755 $ORACLE_HOME/libclntsh.dylib.11.1

Dzięki tym zmianom mogę uruchomić cx_Oracle testy na El Capitan.

Więcej na temat install_name_change tutaj.

Wygląda na to, że klient natychmiastowy 12c został zbudowany w sposób, który pozwala uniknąć tego problemu, więc uaktualnienie do tego będzie prostsze niż hakowanie plików 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. Używanie IS NULL lub IS NOT NULL na warunkach przyłączenia — pytanie teoretyczne

  2. Limit czasu dla metody OracleDataReader.Read

  3. Transformacja wierszy Oracle do kolumny

  4. Przekaż wartości odczytane z pliku jako dane wejściowe do zapytania SQL w Oracle

  5. 2 sposoby zwracania wierszy, które nie zawierają wartości liczbowych w Oracle