尝试通过 Zappa 将 Python 脚本部署到 AWS。脚本在本地虚拟环境(使用 virtualenv)中工作,但 Zappa 部署失败,缺少多个包。尽管进行了广泛的故障排除,但肯定遗漏了一些非常基本的东西。详情如下,任何想法表示赞赏。
错误:zappa deploy dev
错误。 zappa tail
显示 [ERROR] ModuleNotFoundError:没有名为“pandas”的模块。无论
main.py` 中的第一个导入语句是什么,它都会出错,这表明问题并非特定于 Pandas pkg。
下面包含设置 json 和项目目录结构的屏幕截图。
尝试了以下但没有成功:
- 添加了 requirements.txt 项目目录,其中包含
pip freeze
显示的所有 localenv 包 - 在 zappa_settings.json 中添加了“include”设置
zappa package
生成的zip文件中出现确认的pandas和其他依赖包
已解决编辑: 项目目录太大。 AWS Lambda(以及随后的 Zappa)将项目目录(包括依赖项)限制为 512MB。探索替代云基础设施。
最佳答案
已解决:根本原因是项目目录太大。 AWS Lambda(和 Zappa)默认将项目目录(包括依赖项)限制为 512MB,并且 Zappa 的 slim_handler 不会自动绕过它。所以它看不到这些库,因为在运行时 Lambda 上没有足够的空间容纳它们。
这可以在 AWS Lambda 控制台中修复,在功能下 --> [选择您的功能] --> 配置 --> 一般配置 --> 临时存储(编辑目录大小)。
关于此错误的信息很少,所以希望这对某人有所帮助:)
关于python - 为什么 Zappa 部署缺少虚拟环境中存在的所有/大多数包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74889192/