Zappa没有打包嵌套的源目录

时间:2017-08-27 14:56:54

标签: python python-2.7 zappa

我有一个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包含所有子目录?

1 个答案:

答案 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端点做同样的事情。