【问题标题】:Zappa not packaging nested source directoriesZappa 不打包嵌套的源目录
【发布时间】:2017-08-27 14:56:53
【问题描述】:

我有一个尝试使用 zappa 部署的 python 应用程序。我的目录的根目录有应用程序和一个名为 helper 的目录。结构如下:

|-app.py
|-zappa_settings.json
|-helper
   |-api.py
   |-__init.py__

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

from helper import api

当我使用zappa deploy dev 运行命令打包和部署时,它不会捆绑部署中的helper 目录,只会捆绑根级应用程序目录。打包和部署时如何告诉 zappa 包含所有子目录?

【问题讨论】:

    标签: python python-2.7 zappa


    【解决方案1】:

    经过自己的努力,我意识到这个想法是打包你的其他代码,安装在你的虚拟环境中,让 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 端点做同样的事情。

    【讨论】:

    • 我还没有弄清楚如何将app 上下文传递给api.py,这样我就可以在不丢失那些漂亮装饰器的情况下进行路由。如果你可以没有装饰器,你可以这样做:stackoverflow.com/questions/17129573/…
    猜你喜欢
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2020-07-29
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多