当前位置: 首页 > 面试题库 >

问题建立cx_Oracle-libclntsh.so.11.1 =>找不到

虞博涛
2023-03-14
问题内容

我正在尝试为Python 2.7.2和Oracle
11g安装构建cx_Oracle,但是构建的cx_Oracle.so无法找到libclntsh.so.11.1,因此在Python中导入cx_Oracle失败。

/mypath/cx_Oracle-5.1.1/build/lib.linux-x86_64-2.7-11g]$ ldd cx_Oracle.so
    libclntsh.so.11.1 => not found
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ae9be290000)
    libc.so.6 => /lib64/libc.so.6 (0x00002ae9be4ab000)
    /lib64/ld-linux-x86-64.so.2 (0x000000389b600000)

我的Oracle客户端安装目录中有 libclntsh.so.11.1

/apps/oracle/client/11.2.0.1/home1/lib]$ ls -l libclntsh.so*
libclntsh.so -> /apps/oracle/client/11.2.0.1/home1/lib/libclntsh.so.11.1
libclntsh.so.11.1

并且cx_Oracle setup.py正在选择此lib目录:

/mypath/cx_Oracle-5.1.1]$ python2.7 setup.py build
/apps/oracle/client/11.2.0.1/home1/
running build
running build_ext
building 'cx_Oracle' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/apps/oracle/client/11.2.0.1/home1/rdbms/demo -I/apps/oracle/client/11.2.0.1/home1/rdbms/public -I/apps/bweb/python-2.7.2/include/python2.7 -c cx_Oracle.c -o build/temp.linux-x86_64-2.7-11g/cx_Oracle.o -DBUILD_VERSION=5.1.1
In file included from /apps/oracle/client/11.2.0.1/home1/rdbms/public/oci.h:3024,
                 from cx_Oracle.c:10:
/apps/oracle/client/11.2.0.1/home1/rdbms/public/ociap.h:10788: warning: function declaration isn't a prototype
/apps/oracle/client/11.2.0.1/home1/rdbms/public/ociap.h:10794: warning: function declaration isn't a prototype
gcc -pthread -shared build/temp.linux-x86_64-2.7-11g/cx_Oracle.o -L/apps/oracle/client/11.2.0.1/home1/lib -lclntsh -o build/lib.linux-x86_64-2.7-11g/cx_Oracle.so

此设置明显有问题吗?

谢谢

更新

我的 LD_LIBRARY_PATH* 包含上面带有 libclntsh.so.11.1 的lib目录 *

$ echo $LD_LIBRARY_PATH
/apps/oracle/client/11.2.0.1/lib

这似乎没有什么区别。我重建了cx_Oracle.so文件,它libclntsh.so.11.1 => not found在运行时仍然显示$ ldd cx_Oracle.so

Python无法加载内置模块:

Python 2.7.2 (default, Jan 19 2012, 14:38:32)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory

解决了

该问题与 LD_LIBRARY_PATH 环境变量有关。由于设置的限制,我正在使用(corp
env),因此必须以另一个用户(系统帐户)的身份构建cx_Oracle。即我正在运行:

$ sudo -u username python27 setup.py build

因此,即使为我正确设置了 LD_LIBRARY_PATH
,当以其他用户身份执行命令时,也没有使用我的版本。通过将源代码移动到我具有许可权的位置并以用户身份运行该构建,我能够成功构建。


问题答案:

添加/apps/oracle/client/11.2.0.1/home1/lib/到您的LD_LIBRARY_PATH环境变量中,然后在运行python之前在终端中执行以下命令,或将其添加到您的环境变量中.bashrc

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/apps/oracle/client/11.2.0.1/home1/lib/


 类似资料:
  • 问题内容: 我最近在计算机上安装了cx_Oracle模块,以连接到远程Oracle数据库服务器。(我身边没有Oracle客户端)。 Python:2.7 x86版 Oracle:版本11.1.X x64 Cx_Oracle:版本5.1.2-11g.win32-py2.7 然后,每次我运行脚本时,脚本都会失败并显示以下消息: ImportError:DLL加载失败:找不到指定的模块。 我想知道是否我

  • 我试图使用cx_Oracle从AWS Lambda函数(python3.7)内部连接到RDS(Oracle)数据库。此外,Lambda函数本身是使用buildspec.yml文件从AWS CodeBuild自动构建的。CodeBuild本身通过配置AWS CodePipeline来运行,这样,每当我将代码放入的存储库(在本例中是AWS CodeCommit)更新时,它都会自动构建这些东西。 我所做

  • 11.1 创建POM 我们需要先创建一个Maven的pom.xml文件。pom.xml是用于构建项目的配方。打开您最喜欢的文本编辑器并添加以下内容: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/X

  • 在workerman中建立udp服务很简单,类似如下代码 $udp_worker = new Worker('udp://127.0.0.1:9090'); $udp_worker->onMessage = function($connection, $data){ var_dump($data); $connection->send('get'); }; Worker::runA

  • cx_Oracle 是一个能够访问 Oracle 数据库的 Python 扩展模块。它符合Python数据库API 2.0规范,并增加了相当多的内容和几个排除项。 cx_Oracle 8.3 已经在Python 3.6到3.9版本中进行了测试。用户可以将cx_Oracle与Oracle 11.2, 12c, 18c, 19c和21c客户端库一起使用。Oracle标准的客户-服务器版本的互操作性允许

  • 问题内容: 我们较大的网站之一的区域中,用户可以将问题发送给网站所有者,该问题由其工作人员亲自评估。当经常弹出相同的问题时,他们可以将此特定问题添加到常见问题解答中。 为了防止他们每天收到数十个类似的问题,我们希望提供与本网站上“相关问题”类似的功能(堆栈溢出)。 有什么方法可以构建这种功能?我知道我应该以某种方式评估问题并将其与常见问题解答进行比较,但是这种比较是如何进行的?是否提取了关键字?

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 错误:找不到vcvarsall.bat 我正在尝试为python安装MySql接口,但出现错误(如下所述)。我知道解决方案:安装Microsoft Visual C 。除了安装Microsoft Visual C ,还有其他解决方案吗?我的意思是这真的伤害了我。我为什么要安装Microsoft Visual C ++仅仅是因为构

  • 我的应用程序需要libpq、paho mqtt库和mqtt代理。我已将它们安装并构建在我的应用程序的单独文件夹中。当我试图使用“make”命令构建我的应用程序时,我遇到了/usr/bin/ld:cannotfind-lpq错误。如何将应用程序目录链接到libpq库?