我按照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_HOME
和echo $LD_LIBRARY_PATH
时,我现在得到了预期值。但是,错误仍然显示。
答案 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_HOME
和LD_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