环境:Windows 7上的Eclipse Indigo或Eclipse Juno 4.2 Oracle 11g XE(本地安装) 在pydev中运行我的Django项目时,尝试页面访问会导致消息“无法获取Oracle环境句柄”。
通常,我所要做的就是将TNS_ADMIN设置为指向正确的tnsnames.ora目录。
如果我从命令行运行manage.py,则所有工作都按预期工作。我首先想到它可能是一个环境变量差异,但TNS_ADMIN值是相同的。无论如何,在Eclipse运行配置中显式设置TNS_ADMIN并没有什么区别。
PYTHONPATH在两者之间有所不同,我在运行配置中遇到了覆盖它的麻烦,看它是否有所不同。不。
查看cx_Oracle源代码时,错误似乎来自对OCIEnvNlsCreate的调用失败,但我在Oracle文档中没有看到任何明显的内容。
任何人都可以告诉我为什么我在Pydev中得到这个?
答案 0 :(得分:0)
我明白了。我对PATH变量的看法不够。
基本上,有一个虚拟环境需要其脚本目录(包含OCI.DLL)作为路径中的第一个,但我的Oracle安装已经领先于它。因此,错误消息基本上是调用错误的OCI.DLL(与我的Oracle安装相关联,而不是cx_Oracle绑定的那个)的结果。
激活虚拟环境是有效的,因为它改变了路径。 Pydev的工作方式不同,因此Eclipse首先看到了Oracle安装的标准路径。