2016-02-05 81 views
2

我跟着this tutorial在Mac上安裝cx_oracle。經過一些調整,它是成功的。我之前正在使用小牛隊。然後我得到了一個升級到埃爾卡皮坦。這就是災難進來。CX甲骨文導入錯誤

它停止工作。我在前面的目錄中找不到相關的文件。由於System Integrity Protection,我經歷了整個過程,並再次安裝此在usr/local/lib/share/oracle/installclient_11_2

但現在當我運行該程序。它拋出這個錯誤消息:

ImportError: dlopen(/Library/Python/2.7/site-packages/cx_Oracle.so, 2): Library not loaded: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 
    Referenced from: /Library/Python/2.7/site-packages/cx_Oracle.so 
    Reason: image not found 

我嘗試了很多解決方案的在線,像https://gist.github.com/rmoff/5a70862f27d2284e9541http://kevindalias.com/2014/03/26/how-to-set-up-cx_oracle-for-python-on-mac-os-x-10-89/

仍然沒有運氣上我:(

任何建議,歡迎在此先感謝

=============================================== ===========================

UPDATE:

發現this post在線,神奇的作品在埃爾卡皮坦。按照本指導逐步刪除舊安裝,重新開始安裝。

+0

@AlexPoole我是這麼認爲的。我使用以下命令:'export DYLD_LIBRARY_PATH = $ ORACLE_HOME ' – Julia

回答

7

這與system integrity protection (SIP) changes in El Capitan有關,其中防止DYLD_LIBRARY_PATH被spawned processes繼承。

您可以修改cx_Oracle.so庫使用Oracle客戶端庫而不是不再適用於搜索路徑的實際路徑;請確保您的ORACLE_HOME仍然設置爲指向您的實際即時客戶端位置,並且請注意應使用由ImportError報告的確切路徑 - 3071542110值可能因您安裝的Instant Client的版本/內部版本而異:

export ORACLE_HOME=/usr/local/lib/share/oracle/installclient_11_2 

install_name_tool -change \ 
    /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 \ 
    $ORACLE_HOME/libclntsh.dylib.11.1 \ 
    /Library/Python/2.7/site-packages/cx_Oracle.so 

...但隨後該庫無法找到另一個Oracle之一:

ImportError: dlopen(/Library/Python/2.7/site-packages/cx_Oracle.so, 2): Library not loaded: /ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib 
    Referenced from: /usr/local/lib/share/oracle/installclient_11_2/libclntsh.dylib.11.1 
    Reason: image not found 

所以你需要更改該庫也一樣,你可能是不太舒服:

install_name_tool -change \ 
    /ade/b/3071542110/oracle/ldap/lib/libnnz11.dylib \ 
    $ORACLE_HOME/libnnz11.dylib \ 
    $ORACLE_HOME/libclntsh.dylib.11.1 

根據具體客戶端版本/ BUILD您可能需要運行該命令,與之前使文件可寫:

chmod 755 $ORACLE_HOME/libclntsh.dylib.11.1 

這些變化,我可以運行在埃爾卡皮坦的cx_Oracle測試。

更多插入install_name_changehere


它看起來像12C的即時客戶端已建成以避免這個問題的一種方式,因此升級到被鑼比黑客周圍詮釋他11g的文件簡單。

+0

Alex對你很好。 我試圖重新安裝整個事情(確保一切都是64位)。當我運行該項目時,它得到了一個ImportError:'ImportError:dlopen(/Library/Python/2.7/site-packages/cx_Oracle.so,2):未加載的庫:/ ade/dosulliv_ldapmac/oracle/ldap/lib/libnnz11 .dylib 引用自:/ usr/local/lib/share/oracle/instantclient_11_2/libclntsh.dylib.11.1' 我修改了修改cx_Oracle.so庫以使用實際路徑的命令。第二個命令導致: – Julia

+0

'錯誤:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool:無法打開輸入文件:/ usr/local/lib/share/oracle /instantclient_11_2/libclntsh.dylib.11.1寫入(權限被拒絕) 錯誤:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool:無法取消偏移:文件中爲0 :/usr/local/lib/share/oracle/instantclient_11_2/libclntsh.dylib.11.1用於寫入(壞文件描述符) ' – Julia

+0

'錯誤:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool:無法在文件中寫入新標頭:/usr/local/lib/share/oracle/instantclient_11_2/libclntsh.dylib.11.1(錯誤文件描述符) 錯誤:/Applications/Xcode.app/Contents/Developer /Toolchains/XcodeDefault.xctoolchain/usr/bin/in stall_name_tool:無法關閉寫入輸入文件:/usr/local/lib/share/oracle/instantclient_11_2/libclntsh.dylib.11.1(錯誤文件描述符)' – Julia

-1

樣品修復與

ln -s /opt/oracle/product/12.1.0/instantclient_12_1/libclntsh.dylib.12.1 /usr/local/lib/libclntsh.dylib.12.1