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

本地Python脚本运行正常,部署AWS Lambda后出现AttributeError报错求助

解决Lambda Python 3.12中os.add_dll_directory不存在的AttributeError问题

问题根源

os.add_dll_directory是Windows平台专属的Python标准库方法,Linux/macOS环境下的Python没有这个属性。你的依赖包(openpyxl/snowflake.connector间接依赖的numpy)如果是在Windows本地打包的,会带上Windows特有的numpy初始化逻辑,部署到基于Linux的AWS Lambda环境后,numpy初始化时调用该方法就会触发错误。

解决方案

1. 使用Linux环境打包依赖(最可靠)

AWS Lambda的Python运行环境基于Amazon Linux 2023,直接在Linux环境打包能避免跨平台依赖问题:

  • 用Docker模拟Lambda官方环境执行依赖安装:
    # 拉取Lambda Python 3.12镜像,挂载当前目录,安装依赖到指定路径
    docker run -v "$PWD":/var/task public.ecr.aws/lambda/python:3.12 /bin/sh -c "pip install openpyxl snowflake-connector-python -t ./package"
    
  • 将本地脚本和package目录下的所有文件一起压缩成zip包,上传到Lambda即可。

2. 指定跨平台兼容的依赖版本并打包

如果只能在Windows打包,可通过指定manylinux平台参数强制拉取Linux兼容的二进制包:

pip install openpyxl snowflake-connector-python numpy==1.26.4 --platform manylinux2014_x86_64 --only-binary=:all: -t ./package
  • 降级numpy到稳定的跨平台版本(如1.26.4),避免新版本中Windows特有的初始化逻辑。
  • 打包完成后,删除package目录下所有.dll、.pyd等Windows专属文件(可选,但更稳妥)。

3. 检查Lambda运行时配置

确认Lambda的运行时确实选择了Python 3.12,避免因运行时版本不匹配导致的隐性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:22:37