为Zappa部署打包本地python依赖项
上下文 我有一个本地文件夹,其中包含多个Python Flask应用程序和一个commons Python包。如您所见,我为每个Flask应用程序创建了一个virtualenv,因为我希望使用Zappa部署到AWS Lambda,并且只希望在到AWS的包zip中包含相关的依赖项为Zappa部署打包本地python依赖项,python,flask,python-import,zappa,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/ |
project_folder/
+-- commons/
| +-- __init__.py
| +-- setup.py
| +-- module1.py
+-- application1/
| +-- __init__.py
| +-- app.py
| +-- env/
+-- application2/
| +-- __init__.py
| +-- app.py
| +-- env/
问题
我无法在Flask应用程序中包含commons
包。我认为这是必须的,因为它是附属目录,而不是子目录
- 我希望避免在每个烧瓶应用程序中添加副本
- 我不想将整个项目创建为一个巨大的包,因为它对于AWS Lambda来说太大了
当我从
project\u文件夹/application1/
内部调用zappa deploy
时,如何确保包含commons
包?解决方案之一是在虚拟环境中安装包(pip install.
在commons目录中)。Zappa将使用其中安装的所有软件包
当然,这有点麻烦,因为每次修改包时都需要重新安装它。您可以:
zappa deploy
来帮助您谢谢你的快速回答!我担心,仅仅使用
pip install.
,一次也不能让它工作。commons的安装运行良好,但是当我运行cd application1并运行python-c“import commons”时,它将不起作用。因为导入不在路径中。只需在代码中附加路径就可以在本地工作,但对Zappa包不起作用。@TomHemmes这可能是因为您没有有效的目录结构,而pip实际上找不到任何要安装的包。尝试将module1.py放在commons/mypackage/module1.py中。然后再次尝试安装,并通过运行pip list
检查是否安装了mypackage
。如果你不这样做,我会尝试通过添加setup.py的示例来更改答案。这完全是愚蠢的,因为我使用的是find\u packages()
我根本没有理解这个问题。非常感谢,这使我能够部署。您的第一个选项解决了问题,我将测试第二个选项,并报告哪一个更好!