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



>上下文

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

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

问题

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

  • 我想避免在每个 Flask 应用程序中添加副本。
  • 我不想将整个项目创建到一个巨大的包中,因为它对于 AWS Lambda 来说太大了

问题

如何确保从project_folder/application1/内部呼叫zappa deploy时包含commons包?

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

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

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

相关内容

  • 没有找到相关文章

最新更新