- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试为 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 文件,当我运行 $ ldd cx_Oracle.so
时,它仍然显示 libclntsh.so.11.1 => not found
。
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/
关于python - 问题构建 cx_Oracle - libclntsh.so.11.1 => 未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11654090/
我为此苦了一个星期。我正在尝试运行一个使用即时客户端版本11.2.0.3.0与远程Oracle数据库连接的python flask应用程序。 在遇到许多问题之后,我结束了使用3个buildpack,其
以下语句中字典中的 bindind 日期有问题吗?? mySQL = 'SELECT day_key FROM timeday WHERE calendar_date =:calendar' args
我尝试在 Ubuntu 上使用 crontab 运行 python scrapy 爬虫,但收到以下错误消息: Traceback (most recent call last): File "/u
我正在使用 Amazon Work Space,并且我使用 VPN 通过 SSH Ubuntu 16.04 实例进行连接。我使用 python 来连接 Oracle 数据库 11g,我需要使用 cx_
在我的 Python 代码中,当我要求用户输入一个字符串以进行 SELECT 时,它起作用了,但是当我尝试使用相同输入的 UPDATE 时,不允许我执行 这是连接成功后的代码 curs = conne
在我的 Python 代码中,当我要求用户输入一个字符串以进行 SELECT 时,它起作用了,但是当我尝试使用相同输入的 UPDATE 时,不允许我执行 这是连接成功后的代码 curs = conne
我正在尝试使用 python 中的 cx_Oracle 连接到 oracle 数据库。我能够连接到数据库并提取数据。 现在我正在尝试连接到另一个数据库,我必须首先调用安全过程,然后只有我才能看到基础表
对于我创建的 Oracle 表 MYTABLE,我有一个列 COL1,它被声明为 NUMBER(20,3);小数点后可以有 3 位有效数字。当我在此表上运行 cx_Oracle 游标时: cursor
我正在使用 web.py 从 Oracle 创建一个简单的报告页面。当我采用使用 vars= 传递参数的最佳实践方法时,延迟为 11-12 秒。当我使用字符串替换执行相同的查询时,查询会在不到一秒的时
我正在尝试在 python 中使用 cx_Oracle 并行运行完全独立的 Oracle 查询。 我可以通过为每个线程设置一个新的数据库连接,然后在每个单独的线程中运行查询来成功地完成这项工作,这使总
为什么下面的代码不起作用?它返回零行,即使我有很多匹配搜索条件的行。 select * from Table_1 形式的简单查询工作正常并返回正数行 import cx_Oracle def func
在最新版本的 python 中,可以使用类似 with open('abc.txt') as f: 的东西来保证文件被关闭,即使在以下(缩进)中发生异常) 代码块。我想知道这种技术是否也适用于 cx_
我正在使用 cx_oracle python 库来查找过去 90 分钟内具有 ModifiedDate 的任何记录。 import cx_Oracle import datetime from dat
我正在尝试连接到 Oracle 数据库,但出现以下错误: curcon = cx_Oracle.connect(conn_str) cx_Oracle.DatabaseError: ORA-12170
我正在运行... SQL*Plus: Release 9.2.X.X.X - Production on Wed Jun 22 13:02:14 2011 Copyright (c) 1982, 20
Code Oracle: Procedure example ( p_Cod_Rspta out varchar2 , p_e
在 Java DataSource 中实现了一个用于数据库访问的 Java 范例。该对象围绕数据库连接的创建创建了一个有用的抽象。 DataSource 对象保留数据库配置,但只会根据请求创建数据库连
我正在使用 cx_Oracle 访问我们的数据库。我希望用户能够输入电台 ID,例如: stationID=(无论用户在提示时输入什么) cursor.execute('''select cruise
为了演示 Oracle 的安全特性,必须在用户 session 尚未建立时调用 OCIServerVersion() 或 OCIServerRelease()。 同时具有数据库参数 sec_retur
我正尝试在 Oracle 10 数据库中再次执行此操作: cursor = connection.cursor() lOutput = cursor.var(cx_Oracle.STRING) cur
我是一名优秀的程序员,十分优秀!