在Linux Mint 16上安装cx_Oracle for Python
我已经按照这里的说明在我的机器上安装了cx_Oracle 我已经安装了Oracle Client 11.2和cx_Oracle 11g for Python 3.3,两者都是64位的。cx_Oracle使用在Linux Mint 16上安装cx_Oracle for Python,python,oracle,cx-oracle,Python,Oracle,Cx Oracle,我已经按照这里的说明在我的机器上安装了cx_Oracle 我已经安装了Oracle Client 11.2和cx_Oracle 11g for Python 3.3,两者都是64位的。cx_Oracle使用帮助(“模块”)作为一个模块列出,但是我在导入时收到以下错误消息: Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> import cx_Oracle Im
帮助(“模块”)
作为一个模块列出,但是我在导入时收到以下错误消息:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import cx_Oracle
ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
导入cx_Oracle
ImportError:libclntsh.so.11.1:无法打开共享对象文件:没有此类文件或目录
看起来我丢失了一个文件,但我不确定是否需要安装依赖项,或者某些配置是否没有正确设置以指向客户端
谢谢你在这方面的帮助
编辑:
更新,当我运行
echo$ORACLE\u HOME
和echo$LD\u LIBRARY\u PATH
时,我现在得到了预期的值。但是,错误仍然显示。是否导出了ORACLE\u HOME和LD\u LIBRARY\u PATH变量
我想LD_LIBRARY_的路径还没到。
如果未在您的环境中设置:
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
编辑:
好的,如果只运行sqlplus会发生什么
你设置了NLS_LANG吗
举个例子
export NLS_LANG=american_america.WE8ISO8859P1;
如果您遵循您引用的指南,那么您也在
/etc/profile.d/
中创建了一个脚本。确保此脚本以.sh
结尾
您的问题可能与从这个目录加载脚本有关,我猜这是因为您是从非登录bashshell运行python的
要验证这种情况,请尝试使用bash--login
调用bash,或者在现有bash shell中执行source/etc/profile
。然后检查变量ORACLE\u HOME
和LD\u LIBRARY\u PATH
是否使用合理的值定义
如果这样做有效,那么AskUbuntu的/etc/profile.d
中的脚本中有一些相关问题(和答案!)可能会有所帮助:
$ bash --login
$ python
>>> import os
>>> print os.environ.get('ORACLE_HOME', '<not set>')
>>> print os.environ.get('LD_LIBRARY_PATH', '<not set>')
>>> import cx_Oracle
$bash--登录
$python
>>>导入操作系统
>>>打印os.environ.get('ORACLE_HOME','')
>>>打印os.environ.get('LD\u LIBRARY\u PATH','')
>>>导入cx_Oracle
我有/etc/profile.d/oracle.sh和以下行:导出oracle\u HOME=/usr/lib/oracle/11.2/client64
导出LD\u LIBRARY\u PATH=$oracle\u HOME/lib
会将其添加到我的路径中吗?以交互方式检查此变量是否定义良好当我运行echo$oracle\u HOME
时,我会得到预期的路径。当我运行echo$LD_LIBRARY_PATH
时,我得到一个空白响应。我根据fredrikhl的答案进行了双重检查,现在我得到了适当的响应,但出现了相同的错误。我按照您的答案进行了双重检查,当我回送变量时,我没有得到这两个变量的适当响应。但是,我仍然收到相同的错误消息。关于非登录bashshell位,您是对的!在运行bash--login,然后立即跳转到python之后,一切正常。我将查看你发布的消息来源,试图找出如何最好地补救这种情况。我感谢你的帮助。