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

AWS Lambda中Python调用Oracle遇oracledb导入错误求助

问题描述

遇到的错误如下:

Response:
{
  "errorMessage": "Unable to import module 'lambda_function': cannot import name 'base_impl' from partially initialized module 'oracledb' (most likely due to a circular import) (/opt/python/lib/python3.12/site-packages/oracledb/__init__.py)",
  "errorType": "Runtime.ImportModuleError",
  "requestId": "",
  "stackTrace": []
}

已确认base_impl.py存在于oracledb包目录中:

  • lambda1的Python包目录结构
  • base_impl存在于oracledb文件夹中

解决方案

解决oracledb循环导入导致的base_impl无法导入问题
  • 确认版本兼容性:Lambda使用Python 3.12,确保打包的oracledb是支持该版本的最新稳定版。在干净的虚拟环境中重新安装打包:

    pip install --upgrade oracledb -t ./package
    

    重新部署代码包到Lambda。

  • 修正打包方式:不要直接复制本地site-packages,用pip install -t命令在独立环境中打包,保证依赖结构完整无干扰。

  • 延迟导入避免循环依赖:如果lambda_function.py在模块顶层导入oracledb,把导入移到函数内部:

    def lambda_handler(event, context):
        import oracledb
        # 业务逻辑代码
    
  • 排查命名冲突:确保代码中没有和oracledb同名的文件(如oracledb.py),避免覆盖官方模块。

  • 改用Lambda层管理依赖:将oracledb打包成Lambda层,避免代码包打包时的路径或文件损坏问题:

    1. 创建oracledb-layer/python目录
    2. 进入该目录执行pip install oracledb -t .
    3. 压缩python目录为zip,上传为Lambda层并关联到你的函数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:25:54