libclntsh.so:无法打开共享对象文件:没有此类文件或目录Centos 8和python

2024-04-29 15:18:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将python cx_Oracle与Centos 8中的Oracle客户端库连接,我遵循了https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html中显示的步骤,rpm包不起作用,因此我使用zip包并将LD_library_路径配置到解压Oracle文件的目录,在本例中为:/opt/Oracle/lib

当我运行脚本时,我得到:

cx_Oracle.DatabaseError:DPI-1047:找不到64位Oracle客户端库:“%opt/Oracle/lib/libclntsh.so:无法打开共享对象文件:没有这样的文件或目录”。有关帮助,请参阅https://cx-oracle.readthedocs.io/en/latest/用户指南/installation.html

但是如果我运行:find/opt/oracle/lib/libclntsh.so它可以工作,文件在那里,env变量根据错误消息它是正确的,但是脚本仍然不工作,如果有人有任何建议来解决这个问题,我将非常感谢

更新:当我设置DPI_DEBUG_LEVEL=64时,我得到以下输出:

ODPI [04293] 2021-04-10 15:51:06.109: ODPI-C 4.1.0
ODPI [04293] 2021-04-10 15:51:06.109: debugging messages initialized at level 64
ODPI [04293] 2021-04-10 15:51:06.110: Context Parameters:
ODPI [04293] 2021-04-10 15:51:06.110: Environment Variables:
ODPI [04293] 2021-04-10 15:51:06.110:     ORACLE_HOME => "/opt/oracle"
ODPI [04293] 2021-04-10 15:51:06.110:     LD_LIBRARY_PATH => "/opt/oracle/lib"
ODPI [04293] 2021-04-10 15:51:06.110: check module directory
ODPI [04293] 2021-04-10 15:51:06.110: module name is /usr/local/lib64/python3.6/site-packages/cx_Oracle.cpython-36m-aarch64-linux-gnu.so
ODPI [04293] 2021-04-10 15:51:06.110: load in dir /usr/local/lib64/python3.6/site-packages
ODPI [04293] 2021-04-10 15:51:06.110: load with name /usr/local/lib64/python3.6/site-packages/libclntsh.so
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: /usr/local/lib64/python3.6/site-packages/libclntsh.so: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with OS search heuristics
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so.19.1
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so.19.1: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so.18.1
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so.18.1: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so.12.1
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so.12.1: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so.11.1
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so.11.1: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so.20.1
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so.20.1: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: load with name libclntsh.so.21.1
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: libclntsh.so.21.1: cannot open shared object file: No such file or directory
ODPI [04293] 2021-04-10 15:51:06.110: check ORACLE_HOME
ODPI [04293] 2021-04-10 15:51:06.110: load in dir /opt/oracle/lib
ODPI [04293] 2021-04-10 15:51:06.110: load with name /opt/oracle/lib/libclntsh.so
ODPI [04293] 2021-04-10 15:51:06.110: load by OS failure: /opt/oracle/lib/libclntsh.so: cannot open shared object file: No such file or directory
Traceback (most recent call last):
  File "cdr_parser.py", line 387, in <module>
    main()

而且脚本仍然不起作用

更新2:运行时:file/opt/oracle/lib/libclntsh.so我得到:

/opt/oracle/lib/libclntsh.so: symbolic link to libclntsh.so.21.1

并运行ldd/opt/oracle/lib/libclntsh。因此,输出为:

not a dynamic executable

另外,我验证了libaio和liabio-devel的安装,结果是正确的,我的操作系统版本是64位的,InstanceClient也是64位的


Tags: namebyfailuresooslibwithload
1条回答
网友
1楼 · 发布于 2024-04-29 15:18:21

请查看错误消息中链接的文档,特别是troubleshooting部分。特别是,将环境变量DPI_DEBUG_LEVEL设置为值64,然后再次运行脚本。这将告诉您正在搜索的所有位置以及尝试的结果。如果这没有帮助,请用记录的结果更新您的问题。这可能足以进一步帮助我们

编辑:正如Chris提到的,在使用即时客户端时不要设置环境变量ORACLE_HOME。此外,显示file /opt/oracle/lib/libclntsh.soldd /opt/oracle/lib/libclntsh.so的结果,并用这些信息更新您的问题

相关问题 更多 >