设置依赖的加载位置
Setting dependency's loading location
首先我要说的是关于这个问题我已经讨论了多个主题,但还没有找到解决我的问题的方法。
根据我的理解,当 cx_oracle 模块想要加载其依赖项时,它会遍历 PATH 系统环境中的路径,并将加载它找到的第一个依赖项(无论其 version/operating 系统兼容性)。
我工作的环境无法保证 PATH 系统变量不会被 'old' 或不兼容的 oracle 客户端版本的目录填充,但我有一个新的保证 'point' 到正确目录的系统变量。
有什么方法可以强制 cx_oracle 模块从该位置加载库?
您可以(并且应该,只要有可能)通过使用 virtualenv or pipenv.
之类的东西对您的 Python 环境进行沙箱化来避免系统包版本问题
如果这不适合您,您可以尝试操纵当前会话的路径。
import sys
print(sys.path)
这不是我真正推荐的东西,但如果你不能解决这种情况,这可能是最后的选择。
cx_Oracle 7 在 Windows(仅)上有一个 change,它将首先尝试从与 cx_Oracle 模块相同的目录加载 Oracle 客户端库安装到。如果那里没有 Oracle 客户端,则加载回退到 OS 搜索路径(例如 PATH)。
因此,只要您可以手动将 Instant Client 添加到 Python 目录中,您就会得到想要的结果。
ODPI-C 本身不支持使用 PATH 之外的任意目录或 cx_Oracle 目录。
首先我要说的是关于这个问题我已经讨论了多个主题,但还没有找到解决我的问题的方法。
根据我的理解,当 cx_oracle 模块想要加载其依赖项时,它会遍历 PATH 系统环境中的路径,并将加载它找到的第一个依赖项(无论其 version/operating 系统兼容性)。
我工作的环境无法保证 PATH 系统变量不会被 'old' 或不兼容的 oracle 客户端版本的目录填充,但我有一个新的保证 'point' 到正确目录的系统变量。
有什么方法可以强制 cx_oracle 模块从该位置加载库?
您可以(并且应该,只要有可能)通过使用 virtualenv or pipenv.
之类的东西对您的 Python 环境进行沙箱化来避免系统包版本问题如果这不适合您,您可以尝试操纵当前会话的路径。
import sys
print(sys.path)
这不是我真正推荐的东西,但如果你不能解决这种情况,这可能是最后的选择。
cx_Oracle 7 在 Windows(仅)上有一个 change,它将首先尝试从与 cx_Oracle 模块相同的目录加载 Oracle 客户端库安装到。如果那里没有 Oracle 客户端,则加载回退到 OS 搜索路径(例如 PATH)。
因此,只要您可以手动将 Instant Client 添加到 Python 目录中,您就会得到想要的结果。
ODPI-C 本身不支持使用 PATH 之外的任意目录或 cx_Oracle 目录。