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

本地调用AWS SAM(Lambda)Python代码时出现"No module named requests"错误

解决AWS SAM本地调试Lambda时找不到requests模块的问题

我之前也碰到过一模一样的问题,SAM本地调试时依赖加载失败确实挺闹心的,给你几个实用的排查和解决方向:

1. 手动把依赖安装到SAM挂载的目录

SAM本地运行时会把你的代码目录挂载到容器的/var/task,但它不会自动帮你安装requirements.txt里的依赖——云端Lambda是部署时自动打包,但本地需要你手动把依赖放到代码目录里。

执行这个命令,把依赖安装到你的Lambda代码所在的目录(比如你的代码在src文件夹,就进入src目录执行):

pip install -r requirements.txt -t .
  • -t . 参数指定把依赖安装到当前目录,这样SAM挂载时就能在容器里找到这些模块了。
  • 如果用了虚拟环境,确保在虚拟环境中执行这个命令,避免全局环境的干扰。

2. 用sam build自动打包依赖

SAM的build命令会帮你自动处理依赖打包,比手动安装更可靠,步骤如下:

# 项目根目录执行,构建项目并打包依赖
sam build
# 用构建后的包本地调用
sam local invoke

执行sam build后,SAM会在.aws-sam/build目录下生成包含所有依赖的代码包,本地invoke时会用这个打包好的版本,避免依赖缺失问题。

3. 检查SAM模板的CodeUri配置

确保你的template.yaml里的Function资源的CodeUri指向正确的目录——这个目录需要包含你的代码和安装好的依赖。比如:

Resources:
  MyLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: src/  # 这里是你的代码目录,要确保依赖装在这里面
      Handler: app.lambda_handler
      Runtime: python3.8

4. 排查依赖安装的其他问题

  • 检查requirements.txt里的依赖名称是否正确,比如requests有没有拼写错误,有没有多余的空格或无效注释。
  • 确保本地Python版本和Lambda runtime版本一致(你用的是python3.8),可以用pyenv或者虚拟环境切换到对应版本后再安装依赖,避免版本不兼容导致的依赖安装失败。
  • 清理SAM本地缓存:有时候旧的镜像或挂载缓存会导致问题,可以删除.aws-sam目录后重新执行sam build。

如果以上方法都试过还是不行,建议把SAM CLI更新到最新版本,旧版本可能存在一些已知的依赖打包bug。

内容的提问来源于stack exchange,提问作者anoj-cha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:34:11