在Linux Mint 16上安装cx_Oracle for Python

在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

我已经按照这里的说明在我的机器上安装了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
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
中的脚本中有一些相关问题(和答案!)可能会有所帮助:

--

编辑:

环境变量是继承的——如果shell有一个变量,那么从该shell开始的任何东西都应该继承这些变量

记住这一点,试着做:

$ 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之后,一切正常。我将查看你发布的消息来源,试图找出如何最好地补救这种情况。我感谢你的帮助。