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

Python DPI-1047 Nie można zlokalizować dlopen(libclntsh.dylib) w systemie macOS

Mój kod zawsze to robi:

import os
import platform
if platform.system() == "Darwin":
    cx_Oracle.init_oracle_client(lib_dir=os.environ.get("HOME")+"/Downloads/instantclient_19_8")

To najwygodniejsze rozwiązanie. Jeśli otrzymujesz błąd „już zainicjowany”, upewnij się, że wywołujesz tylko init_oracle_client() raz na proces Pythona.

Alternatywnie możesz znaleźć swój plik binarny cx_Oracle, taki jak:

[email protected]:~$ python
Python 3.9.6 (default, Aug 20 2021, 13:36:17) 
[Clang 12.0.5 (clang-1205.0.22.11)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
>>> cx_Oracle
<module 'cx_Oracle' from '/Users/cjones/.local/lib/python3.9/site-packages/cx_Oracle.cpython-39-darwin.so'>

a następnie w oknie terminala zrób coś takiego:

ln -s $HOME/Downloads/instantclient_19_8/libclntsh.dylib $HOME/.local/lib/python3.9/site-packages

To jest dla macOS - każdy użytkownik Linuksa, który to czyta, powinien wiedzieć, że to rozwiązanie nie będzie działać w Linuksie.

oradiag_xxx katalog jest przeznaczony do śledzenia „klienta” Oracle. Możesz to usunąć w dowolnym momencie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Udostępnianie połączenia z bazą danych Oracle między równoczesnymi zadaniami Celery

  2. Migracja postaci Oracle opartej na formularzu

  3. Wybierz pierwszy wiersz każdej grupy w sql

  4. Nie można załadować danych z pliku do tabeli Oracle za pomocą executeMany()

  5. dynamiczna nazwa tabeli w kursorze