簡體   English   中英

cx_Oracle 8 安裝 (macOS Big Sur)

[英]cx_Oracle 8 Installation (macOS Big Sur)

問題聲明:

我目前正在開發macOS Big Sur並嘗試在 macOS Big Sur上運行和安裝cx_Oracle 8 遵循文檔中列出的步驟后,我在啟動時仍然收到以下錯誤。

2022-01-28 10:20:27,085 - root - ERROR - MainThread - 4488076800 - Oracle-Error-Code:0
2022-01-28 10:20:27,086 - root - ERROR - MainThread - 4488076800 - Oracle-Error-Message:DPI-1047: Cannot locate a 64-bit Oracle Client library: "dlopen(libclntsh.dylib, 1): no suitable image found.

注意:我當然已經安裝了package pip install cx-Oracle並且正在正確import cx_Oracle

我試過什么?

我試過以下沒有運氣

將即時客戶端提取到/opt/oracle/instantclient_19_8

$ ln -s /opt/oracle/instantclient_19_8/libclntsh.dylib /usr/local/lib/

mkdir ~/lib
ln -s /opt/oracle/instantclient_19_8/libclntsh.dylib ~/lib/

有了這些,我確實得到了一個有希望的錯誤,但是,我不知道接下來要“嘗試”什么

Did find:
    /xxx/xxx/lib/libclntsh.dylib: stat() failed with errno=62". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help
enter code here

解決問題

我確實有一個解決方法,其中涉及添加一個帶有指向我下載客戶端的鏈接的 init,正如您所想象的那樣,這並不理想,因為您必須根據需要為每個 repo 進出,並且永遠不會想要時機成熟時將此提交給 git。

import cx_Oracle

cx_Oracle.init_oracle_client(lib_dir=f'/xxx/xxx/xxx/instantclient_19_8')

macOS 限制了庫的使用,這很痛苦。

macOS 上有兩種解決方案:

  • 如您所見,使用cx_Oracle.init_oracle_client() 我傾向於這樣寫:
if platform.system() == "Darwin":
 cx_Oracle.init_oracle_client(lib_dir=os.environ.get("HOME")+"/Downloads/instantclient_19_8")
  • 創建一個符號鏈接,如:
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
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
>>> cx_Oracle
<module 'cx_Oracle' from '/Users/cjones/.pyenv/versions/3.9.6/lib/python3.9/site-packages/cx_Oracle.cpython-39-darwin.so'>
>>> 
cjones@mac:~$ ln -s ~/Downloads/instantclient_19_8/libclntsh.dylib /Users/cjones/.pyenv/versions/3.9.6/lib/python3.9/site-packages/

當 Oracle 發布“瘦” Python 驅動程序時,您將不需要 Instant Client,也不需要執行其中任何一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM