gpt4 book ai didi

oracle - cx oracle 导入错误

转载 作者:行者123 更新时间:2023-12-02 08:22:49 26 4
gpt4 key购买 nike

我关注了this tutorial用于在 Mac 上安装 cx_oracle。经过一些调整,它成功了。我之前使用的是 Mavericks。然后我升级到 El Capitan。这就是灾难的来源。

它停止工作了。之前在目录中找不到相关文件。由于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/5a70862f27d2284e9541 , http://kevindalias.com/2014/03/26/how-to-set-up-cx_oracle-for-python-on-mac-os-x-10-89/

我还是不走运:(

欢迎提出任何建议。提前致谢!

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

更新:

找到 this post在线,在 El Capitan 上神奇地工作。删除旧安装,按照此说明逐步重新开始。

最佳答案

这与 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

根据确切的客户端版本/构建,您可能需要在运行该命令之前使文件可写,使用:

chmod 755 $ORACLE_HOME/libclntsh.dylib.11.1

通过这些更改,我可以在 El Capitan 上运行 cx_Oracle 测试。

更多关于 install_name_change here .


看起来 12c 即时客户端的构建方式避免了这个问题,因此升级到 12c 即时客户端比绕过 11g 文件更简单。

关于oracle - cx oracle 导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35231960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com