我遇到了以下錯誤。
cx_Oracle.DatabaseError: DPI-1047: 64位的Oracle客戶端庫不能被加載。"dlopen(libclntsh.dylib, 1): image not found".
我發現的一個修復方法是插入
cx_Oracle.init_oracle_client(lib_dir=path)這導致了Oracle客戶端庫已經被初始化的錯誤。
然而,我沒有在代碼的任何地方呼叫init_oracle_client。我在 Mac 上使用 Python 3.8.11 和 cx_Oracle 8.2.1。
當我最初運行這段代碼時,我沒有安裝任何Oracle客戶端。然后我下載了instantclient_19_8,但在init_oracle_client中使用它,導致了已經初始化的錯誤。 我在這里看到了這個https://cx-oracle.readthedocs.io/en/latest/user_guide/initialization.html.
。我不確定cx_Oracle二進制檔案在哪里,當我進入有我當前Anaconda環境的位置時,我看到一個cx_Oracle-doc檔案夾,里面有readme檔案。此外,在~中還創建了一個oradiag_my_username檔案夾。 不知道有什么需要修正的地方。
uj5u.com熱心網友回復:
我的代碼總是這樣:
import os
import platform
if platform.system() == "Darwin"/span>:
cx_Oracle.init_oracle_client(lib_dir=os.environ.get("HOME"/span>) "/Downloads/instantclient_19_8"/span>)
這是最方便的解決方案。 如果你得到一個 "已經初始化 "的錯誤,那么請確保你在每個 Python 行程中只呼叫 init_oracle_client() 一次。
另外,你可以找到你的cx_Oracle二進制檔案,比如:
cjones@mac:~$ python
Python 3.9。 6 (default, Aug 20 2021, 13: 36:17)
[Clang 12.0.5 (clang-1205.0.22.11) ] on darwin
輸入"help","copyright"。"credits" 或 "license" 了解更多資訊。
>>> import cx_Oracle
>>> cx_Oracle
<模塊 'cx_Oracle' from '/Users/cjones/.local/lib/python3.9/Site-packages/cx_Oracle.cpython-39-darwin.so'>
然后,在一個終端視窗中,做如下操作:
ln -s $HOME/Downloads/instantclient_19_8/libclntsh. dylib $HOME/.local/lib/python3.9/Site-packages
這是針對macOS的--任何閱讀此文的Linux用戶都應該知道這個解決方案在Linux上是行不通的。
oradiag_xxx目錄是用于 Oracle "客戶端 "跟蹤的。 你可以在任何時候洗掉它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/308142.html
標籤:
上一篇:SQLORACLE的日期輸入
