私はflask_restful
で個人用アプリケーションを作成していますが、すべてmodels.py
とapp.py
という単一のもので処理していましたが、アプリケーションが大きくなり、フォルダを再構築することにしました。Pythonは同じフォルダ構造内のパッケージをインポートできません
私は現在、以下の構造を有する:
/project_folder
application_name
__init__.py
controllers.py
models.py
config.py
manage.py
run.py
tests
__init__.py
test_controller.py
すべてがこれまでに動作しますが、私は、構造が以下のようにしたい:
/project_folder
application_name
__init__.py
controllers
__init__.py
brewery_controller.py
...others
models
__init__.py
base_model.py
brewery.py
...others
config.py
manage.py
run.py
tests
__init__.py
test_controller.py
しかし、私はそれを動作させるように見えることはできません。ここで私は運と
from brewery_controller import BreweryList, BreweryResource
from base_model import db
と試みたアプリケーション__init__.py
#/project_folder/application_name/__init__.py
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_restful import Api
from controllers import BreweryList, BreweryResource
from models import db
def initApp(config):
app = Flask(__name__)
app.config.from_object(config)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
api = Api(app)
api.add_resource(BreweryList, '/breweries')
api.add_resource(BreweryResource, '/breweries/<brewery_id>')
return app
です。私はImportError: cannot import BreweryList
を取得し続けており、醸造所のクラスのインポート行のコメントを外すと、同じことがdb
になります。
controllers/__init__.py
とmodels/__init__.py
はどちらも空です。ここで
はrun.py
import os
from beerinv import initApp
if __name__ == '__main__':
app = initApp(os.environ['APP_SETTINGS'])
app.run()
を...' ? – hjpotter92
いくつかのドットがありません: 'from .models import db'([docs](https://docs.python.org/3/tutorial/modules.html#intra-package-references)) –
完全なインポートパスは、パッケージのインポートの途中で開始することはできません。 'application_name.controllers.brewery_controller'から。 – davidism