Python安装cx_Oracle后运行报DPI-1047错误该如何解决?
cx_Oracle导入时报DPI-1047错误解决方案
DPI-1047: Cannot locate a 64-bit Oracle Client library 错误的核心原因是:cx_Oracle仅为Python对接Oracle的接口封装包,本身不携带Oracle客户端核心库,运行时必须依赖本地部署的对应位数的Oracle Client组件才能正常运行,仅通过PyCharm安装cx_Oracle包无法满足运行条件。
前置检查
- 确认当前使用的Python版本位数:执行命令
python -c "import platform;print(platform.architecture())",输出包含64bit则符合报错提示的64位要求,若为32位则需更换为64位Python,或后续安装32位Oracle Client。
方案1:全局配置Oracle Client(推荐)
- 下载64位Oracle Instant Client Basic轻量包,选择和你要连接的Oracle数据库版本兼容的版本即可(客户端支持向下兼容数据库版本)。
- 将下载的压缩包解压到本地无中文、无空格、无特殊字符的路径下,例如
C:\oracle\instantclient_19_11。 - 将解压得到的根目录路径添加到系统Path环境变量中,若系统中此前安装过其他Oracle相关组件,需要将该路径移动到Path列表的最顶部,避免优先加载到不匹配的客户端版本。
- (Windows系统报错未解决时可补充配置)新增系统环境变量
ORACLE_HOME,变量值为你刚才解压的Oracle Client根目录路径。 - 配置完成后必须重启PyCharm,IDE会缓存旧的环境变量配置,重启后再执行脚本即可正常导入cx_Oracle。
方案2:代码内指定客户端路径(无需修改全局环境,适合多版本共存场景)
- 完成上述方案1的前两步(下载并解压Oracle Instant Client到本地路径)。
- 在Python代码中导入cx_Oracle之前,新增初始化代码手动指定客户端路径,示例:
import cx_Oracle # 括号内替换为你自己的Oracle Client解压路径 cx_Oracle.init_oracle_client(lib_dir=r"C:\oracle\instantclient_19_11")
- 该配置优先级高于系统环境变量,无需修改系统配置也能正常加载客户端。
注意事项
- Windows 7及更旧版本系统不要使用19c及以上版本的Oracle Client,这类高版本客户端不再支持旧系统,需安装12c或11g版本的客户端。
内容的提问来源于stack exchange,提问作者disukumo
相关产品推荐
相关产品推荐

