>上下文
我有一个本地文件夹,其中包含多个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 将使用其中安装的所有软件包。
当然,这有点麻烦,因为每次修改包时都需要重新安装包。您可以:
-
创建一个脚本,通过重新安装然后调用
zappa deploy
来帮助您。 - 尝试创建自己的模块并将其注册到zappa_settings.json的
callbacks
部分中。此模块将由部署/更新过程调用,理论上可以事先重新安装包。但是,这只是我的猜测,这可能是可能的。我从来没有尝试过这样的事情。