Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Python DPI-1047 Kann dlopen(libclntsh.dylib) unter macOS nicht finden

Mein Code macht das immer:

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

Dies ist die bequemste Lösung. Wenn Sie den Fehler „bereits initialisiert“ erhalten, stellen Sie sicher, dass Sie nur init_oracle_client() aufrufen einmal pro Python-Prozess.

Alternativ können Sie Ihre cx_Oracle-Binärdatei wie folgt finden:

[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'>

und machen Sie dann in einem Terminalfenster so etwas wie:

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

Dies ist für macOS - alle Linux-Benutzer, die dies lesen, sollten sich darüber im Klaren sein, dass diese Lösung unter Linux nicht funktioniert.

Der oradiag_xxx Verzeichnis ist für Oracle "Client"-Traces. Sie können dies jederzeit löschen.