Zappa不打包嵌套的源目录

med*_*ium 5 python python-2.7 zappa

我有一个要与zappa一起部署的python应用程序。我目录的根目录包含应用程序和名为helper的目录。结构如下:

|-app.py
|-zappa_settings.json
|-helper
   |-api.py
   |-__init.py__
Run Code Online (Sandbox Code Playgroud)

在helper目录中,有一个api.py文件,该文件在我的app.py中被引用,像这样

from helper import api
Run Code Online (Sandbox Code Playgroud)

当我运行用于打包和部署的命令时,zappa deploy dev它将不会捆绑部署中的帮助程序目录,而只会捆绑根应用程序目录。在打包和部署时,如何告诉zappa包括所有子目录?

Dav*_*ein 6

在我自己苦苦挣扎之后,我意识到这个想法是打包你的其他代码,将它安装在你的虚拟环境中,让 app.py 只是一个调用你其他功能的驱动程序。

这是使用 Flask 的具体最小示例。首先,让我们用另一个文件扩展您的示例setup.py

|-app.py
|-zappa_settings.json
|-setup.py
|-helper
   |-api.py
   |-__init.py__
Run Code Online (Sandbox Code Playgroud)

__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"
    }
}
Run Code Online (Sandbox Code Playgroud)

现在你pip install -e .在你的虚拟环境中。如果您现在app.py使用 Flask运行并 go http://127.0.0.1:5000/,您将看到您获得This is the index content. 如果您deploy使用 Zappa,您会看到您的 API 端点做同样的事情。