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包目录中:
解决方案
解决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层,避免代码包打包时的路径或文件损坏问题:
- 创建
oracledb-layer/python目录 - 进入该目录执行
pip install oracledb -t . - 压缩
python目录为zip,上传为Lambda层并关联到你的函数
- 创建
内容的提问来源于stack exchange,提问作者SD_1211
相关产品推荐
相关产品推荐



