为 Zappa 部署打包本地 python 依赖项

Packaging local python dependencies for Zappa deployment

上下文

我有一个包含多个 Python Flask 应用程序和一个公共 python 包的本地文件夹。如您所见,我已经为每个 Flask 应用程序创建了一个 virtualenv,因为我想使用 Zappa 部署到 AWS Lambda,并且只想在发送到 AWS 的压缩包中包含相关依赖项。

project_folder/
 +-- commons/
 |   +-- __init__.py
 |   +-- setup.py
 |   +-- module1.py
 +-- application1/
 |   +-- __init__.py
 |   +-- app.py
 |   +-- env/
 +-- application2/
 |   +-- __init__.py
 |   +-- app.py
 |   +-- env/

问题

我无法在 Flask 应用程序中包含 commons 包。我认为这是必须的,因为它是附属目录而不是子目录。

问题

当我从 project_folder/application1/ 内部调用 zappa deploy 时,如何确保包含 commons 包?

解决方案之一是在您的虚拟环境中安装软件包(pip install .commons 目录中)。 Zappa 将使用其中安装的所有软件包。

当然,这有点麻烦,因为每次修改包都需要重新安装。您可以:

  1. 创建一个脚本 以帮助您重新安装然后调用 zappa deploy
  2. 尝试创建您自己的模块并在zappa_settings.jsoncallbacks部分注册它。该模块将由 deployment/update 进程调用,理论上可以预先重新安装包。但是,这个选项只是我的 猜测 它可能是可能的。我从来没有尝试过这样的事情。