日期:2014-05-16  浏览次数:20642 次

cx_Oracle的"Unable to acquire Oracle environment handle"异常
  先发一下牢骚,在对数据库的访问上,python跟java的jdbc相比,还是有不少差距的,比如访问Oracle,虽然有比较成熟的cx_Oracle,但是其安装和发布实在太复杂了,也顺便验证了一个道理,复杂的东西,其依赖的东西一般也比较多。
  切入正题,我是在Linux(Center OS 5)上安装cx_Oracle的,所需要的依赖,可以查看cx_Oracle的README,我采用的Instant Client方式,比较少,其rpm才几十M。
  一开始,我图省事,只是将所需要的so文件直接放到/usr/lib下边(其实这是个愚蠢的偷懒办法),结果就出现如题的异常。
  摸索下来,要成功运行cx_Oracle只是需要设置如下两个环境变量:
  • ORACLE_HOME,一般是你instant client 所在目录,通过rpm的一般在/usr/lib/oracle/xxx
  • LD_LIBRARY_PATH,一般是$ORACLE_HOME/lib


2011-3-17更新

在Window(XP)下安装,是不需要设置ORACLE_HOME,但是必须要将Instant Client的目录加到PATH的环境变量中。
OCI.DLL最好不要放在site-packages下边
1 楼 parra 2011-08-01  
为什么OCI.DLL最好不要放在site-packages下边 ?
2 楼 agile_boy 2011-08-01  
parra 写道
为什么OCI.DLL最好不要放在site-packages下边 ?

呵呵,是我不知道其中的根本,所以觉得应该放在Oracle的安装的地方了。