2017-08-27 13 views
1

私はzappaで展開しようとしているpythonアプリケーションを持っています。私のディレクトリのルートレベルには、アプリケーションとディレクトリというヘルパーという名前のディレクトリがあります。ヘルパーディレクトリ内Zappaはネストされたソースディレクトリをパッケージ化していません

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

私はコマンドを実行するので、

from helper import api 

のように私のapp.pyで参照されているapi.pyファイルがある:構造は次のようになりますzappa deploy devを使用してパッケージ化してデプロイすると、デプロイメントにヘルパーディレクトリがバンドルされず、ルートレベルのアプリケーションディレクトリのみがバンドルされます。パッケージ化と展開の際にzappaにすべてのサブディレクトリを含めるように指示するにはどうすればよいですか?

答えて

0

自分自身で苦労した後、他のコードをパッケージ化して仮想環境にインストールし、他の機能を呼び出すドライバだけをapp.pyにすることを考えました。

ここでは、Flaskを使用した具体的な最小例を示します。

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

__init__.pyが空である:最初に、1つの以上のファイル、setup.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が得られることがわかります。また、Zappaを使用してdeployを使用すると、APIエンドポイントが同じことを行うことがわかります。

関連する問題