【问题标题】:AWS Lambda with Zappa fails on "Unable to import module 'handler': No module named builtins"带有 Zappa 的 AWS Lambda 因“无法导入模块‘处理程序’:没有名为 builtins 的模块”而失败
【发布时间】:2026-02-24 04:35:01
【问题描述】:

我已使用 Zappa 将我的应用程序部署到 AWS Lambda。部署顺利,没有任何问题。但是当我尝试通过 AWS API Gateway 访问应用程序时,我收到了 500 响应。

日志说

无法导入模块“处理程序”:没有名为 builtins 的模块

环境在 Python 2.7 上运行。我已将future 添加到 Pipfile 中,但它仍然无法正常工作。

当我检查 Lambda 中的代码时,我可以看到以下代码

from __future__ import unicode_literals

import base64
import boto3
import collections
import datetime
import importlib
import inspect
import json
import logging
import os
import sys
import traceback
import zipfile

from builtins import str

我找不到哪里出了问题。有人有线索吗?

【问题讨论】:

  • 您能否发布您的解决方案的图片(即文件夹结构)?您不能将内置库与您的 lambda 函数一起打包。
  • 您可能在 AWS 控制台上错误地设置了 Lambda 处理程序的名称。
  • 它是handler.lambda_handler,这是Zappa的默认值。为什么认为这是问题所在?

标签: python python-2.7 amazon-web-services aws-lambda


【解决方案1】:

我解决了这个问题。我正在使用 pipenv 安装我的包,但由于某种原因,这些包没有安装在虚拟环境中,这使得 Zappa 无法将它们包含在 AWS Lambda 中。我必须通过 Settings > Project > Project Interpreter 在 PyCharm 中手动安装它们并在那里添加软件包。谢谢你的帮助。

【讨论】:

  • 我将 python2.7 升级到 python3.6 并面临同样的问题,请告诉我解决方法是什么,因为我没有使用 PyCharm。仅使用终端。
  • 您是否重新安装了pipenv 中的所有软件包?
  • 我删除了以前由vitualenv env -p python2.7 创建的环境,然后在我刚刚完成pip install -r requirement.txt 之后使用virtualenv env -p python3.6 创建了新环境
最近更新 更多