无法加载Python3 cx-Oracle Oracle Client库:Linux上的“ libclntsh.so”

马吉斯托

我通过搜索发现了类似的问题。但是,以前的解决方案似乎集中在Windows而非Linux上。

1)Python版本:Python 3.4.6

2)操作系统版本:Linux SLES 12.3

3)Oracle数据库版本:11.2

4)Oracle客户端:64位11.2即时客户端指示灯,cx-Oracle 6.4.1

5)LIBAIO:

S  | Name          | Summary                                                    | Type
---+---------------+------------------------------------------------------------+--------
i+ | libaio-devel  | Development Files for Linux-native Asynchronous I/O Access | package
i  | libaio1       | Linux-Native Asynchronous I/O Access Library               | package
   | libaio1-32bit | Linux-Native Asynchronous I/O Access Library               | package

6)Oracle客户端位置:/opt/pyora/oracle_11.2/instantclient_11_2

drwxrwxrwx 1 virtual wheel       346 Oct 23 07:48 .
drwxrwxrwx 1 virtual wheel       124 Oct 23 07:47 ..
-rwxrwxrwx 1 virtual wheel     25420 Aug 24  2013 adrci
-rwxrwxrwx 1 virtual wheel       449 Aug 24  2013 BASIC_LITE_README
-rwxrwxrwx 1 virtual wheel       439 Aug 24  2013 BASIC_README
-rwxrwxrwx 1 virtual wheel     47860 Aug 24  2013 genezi
-rwxrwxrwx 1 virtual wheel  53865194 Oct 22 16:44 libclntsh.so
-rwxrwxrwx 1 virtual wheel  53865194 Aug 24  2013 libclntsh.so.11.1
-rwxrwxrwx 1 virtual wheel   7996693 Aug 24  2013 libnnz11.so
-rwxrwxrwx 1 virtual wheel   1973074 Aug 24  2013 libocci.so.11.1
-rwxrwxrwx 1 virtual wheel 118738042 Aug 24  2013 libociei.so
-rwxrwxrwx 1 virtual wheel   9897206 Aug 24  2013 libociicus.so
-rwxrwxrwx 1 virtual wheel    164942 Aug 24  2013 libocijdbc11.so
-rwxrwxrwx 1 virtual wheel   2091135 Aug 24  2013 ojdbc5.jar
-rwxrwxrwx 1 virtual wheel   2739616 Aug 24  2013 ojdbc6.jar
-rwxrwxrwx 1 virtual wheel    192365 Aug 24  2013 uidrvci
-rwxrwxrwx 1 virtual wheel     66779 Aug 24  2013 xstreams.jar

7)下面的代码设置环境变量以及进行连接的尝试:(从python交互式shell运行)

from base64 import b64encode, b64decode # used for excoding/decoding base64 data
from toml import load as toml_load # used to retreive config file data
import cx_Oracle # used for accessing the Oracle databases
import os
import re
import sys
def decode_data(data):
    return b64decode(data).decode('ascii')
path = os.environ["PATH"]
os.environ["PATH"] = "/opt/pyora/oracle_11.2/instantclient_11_2:" + path
os.environ["LD_LIBRARY_PATH"] = "/opt/pyora/oracle_11.2/instantclient_11_2"
os.environ["ORACLE_HOME"] = "/opt/pyora/oracle_11.2/instantclient_11_2"
os.environ["ORACLE_BASE"] = "/opt/pyora/oracle_11.2/instantclient_11_2"
username = decode_data("***")
password = decode_data("***")
hostname=decode_data("***")
port=decode_data("***")
schema=decode_data("***")
dsn ="{hostname}:{port}/{schema}".format(hostname=hostname,port=port,schema=schema)
print("PATH="+os.environ["PATH"]+"\n")
print("LS_LIBRARY_PATH="+os.environ["LD_LIBRARY_PATH"]+"\n")
print("ORACLE_HOME="+os.environ["ORACLE_HOME"]+"\n")
print("ORACLE_BASE="+os.environ["ORACLE_BASE"]+"\n")
dconn = cx_Oracle.connect(user=username,password=password,dsn=dsn)

8)以下是收到的错误:标准用户-

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help

Sudo'd用户-(在导入cx_Oracle之后)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libnnz11.so: cannot open shared object file: No such file or directory

我已经按照错误消息中找到的链接的说明进行操作,但这没有帮助。https://oracle.github.io/odpi/doc/installation.html#linux

我确实在各个部分上验证了体系结构:

Oracle Instant Client:Instantclient-basic-linux.x64-11.2.0.4.0.zip

libaio:

libaio-devel-0.3.109-17.15.x86_64
libaio1-0.3.109-17.15.x86_64

Python 3:

Python 3.4.6 (default, Mar 01 2017, 16:52:22) [GCC] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> platform.architecture()
('64bit', 'ELF')
>>>
克里斯托弗·琼斯

启动应用程序之前,设置库搜索路径我建议使用ldconfig,如ODPI-C安装链接和实际的cx_Oracle安装文档所示

对于Instant Client,请不要设置ORACLE_HOME或ORACLE_BASE。以及为什么在应用程序内部设置PATH?

我还建议您使用Instant Client 18.3,它可以连接到Oracle Database 11.2及更高版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Docker 上的 cx_Oracle:DPI-1047:无法加载 64 位 Oracle 客户端库:“libclntsh.so

libclntsh.so.12.1的CX_Oracle导入错误

在 ml-engine 中使用 cx_oracle 导致“无法加载 Oracle 客户端库”

cx_Oracle无法识别要在Linux上安装的Oracle软件安装位置

无法在macOS Big Sur上安装DBD :: Oracle =>找不到依赖的dylib'@ rpath / libclntsh.dylib.19.1'

无法用python的cx_Oracle连接oracle远程数据库

python无法识别cx_Oracle

python在cygwin上导入cx_Oracle错误

使用python连接到Oracle数据库(cx_oracle)

使用 cx_Oracle executemany() 从 Python 列表/字典批量插入 Oracle 数据库

使用即时客户端通过Python3(cx_Oracle)连接到Oracle数据库时,错误“ DPI-1047:无法找到64位Oracle客户端库”

在cx_oracle上使用多个主机

sqlalchemy cx_oracle 无法获得结果

Pyinstaller:cx_Oracle.InterfaceError:无法获取Oracle环境句柄

cx_oracle无法获取Oracle环境句柄

Python ETL-使用cx_Oracle批量或迭代将大型数据集加载到Oracle数据库中

python cx_Oracle 查询结束

python cx_Oracle 连接远程错误

Python cx_Oracle绑定变量

Python cx_Oracle 查询速度

Python cx_Oracle。用executemany()撞头

Python cx_Oracle中的Oracle准备语句的IN子句

如何修复:cx_Oracle.DatabaseError:DPI-1047:无法找到64位Oracle客户端库-Python

cx_Oracle连接失败,并显示“ DPI-1047:无法找到64位Oracle客户端库”

无法在 pypy3 中安装 cx_Oracle

libclntsh.so.12.1:运行node-oracledb示例时无法打开共享库文件错误

数据库:使用cx_oracle通过python检查数据类型

在oracle linux(libnsl.so.1)上安装oracle xe数据库的问题

Python 3.6,用于 64 位 Windows 上的 11g 客户端的 cx_oracle