我试图将带有一些全局变量的烧瓶应用上下文传递给嵌套的api上下文。
run.py <= Start the flask application via app.run()
app/
__init__.py
api/
__init__.py
controllers.py
应用/ __初始化__。PY
from flask import Flask
from app.api.controllers import api
app = Flask(__name__)
app.register_blueprint(api, url_prefix='/api')
main_dict = {"a":"info1", "b":"info2}
应用/ API / controllers.py
from flask import Blueprint, jsonify
from app import app, main_dict
api = Blueprint('api', __name__)
@api.route('/')
def test():
return jsonify({"status":"OK"})
它会抛出以下错误消息:
ImportError: cannot import name 'app'
谢谢!
答案 0 :(得分:0)
您已创建循环依赖项。
app
想要导入app.api.controllers
,但想要从app
导入。您应该采取的措施是创建一个包含main_dict
的新模块,并在app
和app.api.controllers
中导入该模块:
# app/__init__.py
from .main_dict import main_dict
from .api.controllers import api
# app/main_dict.py
main_dict = {'a': 'A'}
# app/api/__init__.py
# app/api/controllers.py
from flask import current_app as app
from ..main_dict import main_dict
如果您需要访问app/__init__.py
以外的应用,建议的方法是使用from flask import current_app