我有一个python应用程序,我正在尝试使用zappa进行部署。我的目录的根级别包含应用程序和名为 helper 的目录。结构如下所示:
|-app.py
|-zappa_settings.json
|-helper
|-api.py
|-__init.py__
在帮助程序目录中有一个 api.py 文件,在我的 app.py 中引用,如此
from helper import api
当我使用zappa deploy dev
运行命令进行打包和部署时,它不会捆绑部署中的帮助程序目录,只会捆绑根级别的应用程序目录。在打包和部署时,如何告诉zappa包含所有子目录?
答案 0 :(得分:4)
在我自己挣扎之后,我意识到我的想法是打包你的其他代码,在你的虚拟环境中安装它,并让app.py只是一个调用你的其他功能的驱动程序。
这是使用Flask的具体最小示例。首先,让我们再使用一个文件setup.py
扩展您的示例:
|-app.py
|-zappa_settings.json
|-setup.py
|-helper
|-api.py
|-__init.py__
__init__.py
为空。其余文件如下:
# setup.py
from setuptools import setup
setup(
name='helper',
packages=['helper'],
include_package_data=True,
install_requires=['flask']
)
# app.py
from helper import api
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return api.index()
# helper/api.py
def index():
return "This is the index content"
# zappa_settings.json
{
"dev": {
"app_function": "app.app",
"s3_bucket": "my_bucket"
}
}
现在您在虚拟环境中pip install -e .
。如果您现在使用Flask运行app.py
并转到http://127.0.0.1:5000/
,则会看到您获得This is the index content
。如果您deploy
使用Zappa,您会发现您的API端点做同样的事情。