在Linux Mint 16上安装Python的cx_Oracle

时间:2014-05-12 15:59:41

标签: python oracle cx-oracle

我按照http://maxolasersquad.blogspot.com/2011/04/cxoracle-on-ubuntu-1104-natty.html的说明在我的机器上安装了cx_Oracle。

我为Python 3.3安装了Oracle Client 11.2和cx_Oracle 11g,均为64位。 cx_Oracle被列为使用help('modules')的模块,但是我在导入时收到以下错误消息:

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

我似乎错过了一个文件,但我不确定是否需要安装依赖项,或者某些配置设置不正确以指向客户端。

感谢您对此的帮助。

编辑:

更新,当我运行echo $ORACLE_HOMEecho $LD_LIBRARY_PATH时,我现在得到了预期值。但是,错误仍然显示。

2 个答案:

答案 0 :(得分:1)

您是否导出了ORACLE_HOME和LD_LIBRARY_PATH变量?

我认为LD_LIBRARY_PATH没有启动。 如果没有在环境中设置它:

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

编辑:

好的,如果只运行sqlplus会发生什么?

您是否设置了NLS_LANG?

试试例子

export NLS_LANG=american_america.WE8ISO8859P1;

答案 1 :(得分:1)

如果您按照引用的指南进行操作,那么您还在/etc/profile.d/中创建了一个脚本。确保此脚本以.sh结尾。

您的问题可能与从此目录加载脚本有关,我猜测是因为您从非登录 bash shell运行python。

要验证是否是这种情况,请尝试使用bash --login调用bash,或在现有bash shell中执行source /etc/profile。然后检查变量ORACLE_HOMELD_LIBRARY_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