打包本地python依赖项以进行Zappa部署

时间:2019-10-10 12:16:51

标签: python flask python-import zappa

上下文

我有一个本地文件夹,其中包含多个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来说太大了

问题

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

1 个答案:

答案 0 :(得分:1)

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

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

  1. 创建脚本,该脚本将通过重新安装然后调用zappa deploy来为您提供帮助。
  2. 尝试创建自己的模块并在 zappa_settings.json callbacks部分中注册。部署/更新过程将调用此模块,并且理论上可以预先重新安装该软件包。但是,这只是我的猜测选项,它是可能的。我从来没有尝试过这样的事情。