0

环境: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 中得到这个?

4

1 回答 1

0

我想到了。我对 PATH 变量不够仔细。

基本上,有一个虚拟环境需要它的脚本目录(包含 OCI.DLL)在路径中的第一个,但我的 Oracle 安装在它前面。因此,错误消息基本上是调用错误 OCI.DLL 的结果(与我的 Oracle 安装相关的那个,而不是 cx_Oracle 绑定的那个)。

激活虚拟环境有效,因为它改变了路径。Pydev 的工作方式不同,因此 Eclipse 会首先看到我安装 Oracle 的标准路径。

于 2012-09-10T17:46:24.337 回答