Python 3.9 64位环境导入cx_Oracle 8.2.1提示DLL加载失败求助
解决思路
- 第一步:确认三者架构完全匹配
执行命令python -c "import platform;print(platform.architecture())"查看Python解释器架构,必须和cx_Oracle、Instant Client的位数完全一致:- 如果Python是32位,必须使用32位的cx_Oracle和32位19c Instant Client(21c及以上版本无32位Windows安装包)
- 如果Python是64位,必须使用64位的cx_Oracle和64位Instant Client
- 第二步:修复原有配置代码的拼写错误
你提供的环境变量配置代码存在变量名拼写错误:currdirr = os.getcwd()变量名多了一个r,后续拼接PATH时使用的currdir是未定义变量,导致实际拼接的路径无效,DLL自然无法找到。 - 第三步:避免配置冲突,二选一使用初始化方式
cx_Oracle 8+版本不要同时使用「修改环境变量」和init_oracle_client两种配置方式,选其中一种即可:- 方式一(推荐,无需改环境变量):删除所有代码中关于Oracle的环境变量配置,仅保留如下初始化逻辑,注意路径不要包含中文、空格或特殊字符:
import cx_Oracle cx_Oracle.init_oracle_client(lib_dir=r"C:\Our_Python_Directory\instantclient_19_12") - 方式二:将Instant Client的全路径加到系统环境变量
PATH的最靠前位置,重启PyCharm后直接import cx_Oracle即可,不要在代码中重复修改PATH或调用初始化方法
- 方式一(推荐,无需改环境变量):删除所有代码中关于Oracle的环境变量配置,仅保留如下初始化逻辑,注意路径不要包含中文、空格或特殊字符:
- 第四步:安装对应VC++运行库
19c、21c版本的Instant Client依赖Visual Studio 2015-2022 可再发行组件包,对应你使用的Instant Client位数安装对应版本的运行库,缺少该依赖时就算oci.dll存在也会报找不到模块的错误。 - 第五步:排查缓存和权限问题
- 先退出PyCharm,在系统原生CMD中激活虚拟环境,执行import cx_Oracle测试,排除PyCharm环境变量缓存问题
- 检查Instant Client文件夹的权限,确保当前Windows用户对该文件夹有读取和执行权限
- 优先使用完整的Basic版Instant Client包,不要使用Basic Light精简包,避免缺少必要组件
- 第六步:删除无效环境变量配置
Windows系统下LD_LIBRARY_PATH是Linux专属环境变量不会生效,Instant Client也不需要配置ORACLE_HOME,这两项配置请从代码和系统环境变量中删除,避免引发冲突。
内容的提问来源于stack exchange,提问作者TigerWolfe
相关产品推荐
相关产品推荐

