sql >> Databasteknik >  >> RDS >> Oracle

Python DPI-1047 Kan inte hitta dlopen(libclntsh.dylib) på macOS

Min kod gör alltid så här:

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

Detta är den mest bekväma lösningen. Om du får ett "redan initialiserat"-fel, se till att du bara anropar init_oracle_client() en gång per Python-process.

Alternativt kan du hitta din cx_Oracle-binär som:

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

och sedan, i ett terminalfönster, gör något i stil med:

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

Det här är för macOS - alla Linux-användare som läser detta bör vara medvetna om att den här lösningen inte fungerar på Linux.

oradiag_xxx katalogen är för Oracle "klient" spår. Du kan ta bort detta när som helst.




  1. Kan inte krympa "skrivskyddad" databas | Krympa transaktionslogg när du använder AlwaysOn Availability Group

  2. inlägg omdöpt filnamn från uppladdning till databas

  3. Visual Studio 2015:SQL-datakälla:Det går inte att hämta schema. Se till att egenskaperna ConnectionString och SelectCommand är giltiga

  4. MySQL SLÄPP UNIK BEGRÄNSNING