You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:M2 Mac环境下Python3.12连接Oracle SQL Cloud失败(DPI-1047错误)

解决M2 MacBook Pro上cx_Oracle连接Oracle Cloud的DPI-1047错误

这个错误的核心是系统找不到适配ARM架构的64位Oracle客户端库,以下是经过验证的解决方案:

1. 安装ARM版Oracle Instant Client

  • 下载适配Mac ARM64架构的Instant Client Basic包(务必选择ARM版本,不要选x86版本)
  • 解压到自定义路径,比如~/lib/instantclient_23_3(版本号根据下载的包调整)
  • 打开系统设置→隐私与安全性,找到被阻止的Instant Client相关文件(如果弹出提示),点击「允许」解除安全限制

2. 配置virtualenv环境变量

激活你的virtualenv环境后,编辑环境的activate脚本(路径为你的venv目录/bin/activate),在文件末尾添加:

export DYLD_LIBRARY_PATH="/Users/你的用户名/lib/instantclient_23_3:$DYLD_LIBRARY_PATH"

替换路径为你实际的Instant Client解压目录,保存后重新激活环境:

deactivate
source 你的venv目录/bin/activate

验证路径是否生效:

echo $DYLD_LIBRARY_PATH

输出应包含你的Instant Client目录

3. 重新安装cx_Oracle(可选但推荐)

在激活的virtualenv中执行:

pip uninstall -y cx_Oracle
pip install cx_Oracle

确保安装过程中cx_Oracle能检测到正确的客户端库

4. 测试连接

创建测试脚本test_oracle.py:

import cx_Oracle

# 替换为你的Oracle Cloud连接信息
dsn = cx_Oracle.makedsn("your-cloud-host.oraclecloud.com", 1521, service_name="your-service-name")
conn = cx_Oracle.connect(user="your-username", password="your-password", dsn=dsn)
cursor = conn.cursor()
cursor.execute("SELECT 'Connection Success' FROM dual")
print(cursor.fetchone()[0])
cursor.close()
conn.close()

运行脚本:

python test_oracle.py

如果输出Connection Success则说明问题解决

关键注意事项

  • 必须使用ARM64版本的Instant Client,x86版本无法在M2上正常工作
  • 直接在virtualenv的activate脚本中配置路径更可靠,避免全局环境变量冲突
  • MacOS的安全机制可能阻止加载未签名的库,务必在隐私设置中解除限制

内容的提问来源于stack exchange,提问作者b8con

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:10:16