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

如何在AWS Lambda中安装Pydantic库?解决模块缺失报错

问题

我基于Serverless Framework、Flask和MongoDB开发项目,在安装Pydantic库时出现报错:ModuleNotFoundError: No module named 'pydantic_core._pydantic_core',尽管requirements.txt中已经明确指定了该库。请问是否有办法在AWS Lambda中成功安装Pydantic,或是该库本身无法在Lambda环境中使用?

Cloudwatch日志追踪

File "/var/task/app.py", line 5, in <module>
from pydantic import ValidationError
File "/var/task/pydantic/__init__.py", line 3, in <module>
import pydantic_core
File "/var/task/pydantic_core/__init__.py", line 6, in <module>
from ._pydantic_core import (
ModuleNotFoundError: No module named 'pydantic_core._pydantic_core'
[ERROR] Exception: Unable to import app.app
Traceback (most recent call last):
  File "/var/lang/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/var/task/wsgi_handler.py", line 115, in <module>
    wsgi_app = import_app(config)
  File "/var/task/wsgi_handler.py", line 48, in import_app
    raise Exception("Unable to import {}".format(config["app"]))

requirements.txt

Flask==1.1.4
Werkzeug==1.0.1
markupsafe==2.0.1
pymongo==4.5.0
pydantic==2.2.1
pydantic_core==2.6.1
email-validator==2.0.0.post2

serverless.yml

service: users

frameworkVersion: "3"

custom:
  wsgi:
    app: app.app

provider:
  name: aws
  runtime: python3.11
  stage: dev
  region: us-west-2
  environment:
    MONGO_URI: <mongo_uri>

functions:
  api:
    handler: wsgi_handler.handler
    events:
      - httpApi: "*"

plugins:
  - serverless-wsgi
  - serverless-python-requirements
解决方案

这个问题的核心是Pydantic 2.x版本依赖的pydantic_core包含二进制扩展文件,若在非Linux环境(如Windows、macOS)本地安装依赖,生成的二进制文件无法兼容AWS Lambda的Amazon Linux运行环境,导致部署后找不到核心模块。以下是几种可行的解决方法:

  • 配置serverless-python-requirements在Docker中构建依赖
    在serverless.yml的custom字段中添加pythonRequirements配置,让插件通过Docker模拟Lambda的Linux环境安装依赖,确保生成的二进制文件完全兼容:

    custom:
      wsgi:
        app: app.app
      pythonRequirements:
        dockerizePip: true
    

    配置后,插件会自动拉取对应Lambda runtime的镜像,在容器内完成依赖安装,打包后的产物可直接在Lambda上正常运行。

  • 降级至Pydantic 1.x版本
    Pydantic 1.x基于纯Python实现,不依赖pydantic_core这类二进制核心库,兼容性更强。修改requirements.txt,替换Pydantic版本并移除pydantic_core依赖:

    pydantic==1.10.12
    

    重新执行部署即可解决模块缺失问题。

  • 在Linux环境手动构建依赖包
    若本地环境为Linux,可直接执行以下命令将依赖安装到指定目录,再与代码一起打包部署:

    pip install -r requirements.txt -t ./vendor
    

    也可使用AWS EC2的Amazon Linux实例构建依赖,确保环境与Lambda完全一致。

  • 更新serverless-python-requirements插件版本
    旧版本的serverless-python-requirements插件对Pydantic 2.x的支持可能存在缺陷,执行以下命令更新至最新版本:

    npm update serverless-python-requirements
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:44:54