为 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
包。我认为这是必须的,因为它是附属目录而不是子目录。
- 我想避免在每个 Flask 应用程序中添加一个副本。
- 我不想将整个项目创建到一个巨大的包中,因为它对于 AWS Lambda 来说太大了
问题
当我从 project_folder/application1/
内部调用 zappa deploy
时,如何确保包含 commons
包?
解决方案之一是在您的虚拟环境中安装软件包(pip install .
在 commons 目录中)。 Zappa 将使用其中安装的所有软件包。
当然,这有点麻烦,因为每次修改包都需要重新安装。您可以:
- 创建一个脚本 以帮助您重新安装然后调用
zappa deploy
。
- 尝试创建您自己的模块并在zappa_settings.json的
callbacks
部分注册它。该模块将由 deployment/update 进程调用,理论上可以预先重新安装包。但是,这个选项只是我的 猜测 它可能是可能的。我从来没有尝试过这样的事情。
上下文
我有一个包含多个 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
包。我认为这是必须的,因为它是附属目录而不是子目录。
- 我想避免在每个 Flask 应用程序中添加一个副本。
- 我不想将整个项目创建到一个巨大的包中,因为它对于 AWS Lambda 来说太大了
问题
当我从 project_folder/application1/
内部调用 zappa deploy
时,如何确保包含 commons
包?
解决方案之一是在您的虚拟环境中安装软件包(pip install .
在 commons 目录中)。 Zappa 将使用其中安装的所有软件包。
当然,这有点麻烦,因为每次修改包都需要重新安装。您可以:
- 创建一个脚本 以帮助您重新安装然后调用
zappa deploy
。 - 尝试创建您自己的模块并在zappa_settings.json的
callbacks
部分注册它。该模块将由 deployment/update 进程调用,理论上可以预先重新安装包。但是,这个选项只是我的 猜测 它可能是可能的。我从来没有尝试过这样的事情。