[英]Flask ImportError: cannot import name (for app in __init__.py)
我是Flask和REST-API /服务器端脚本编写的新手。 尝试执行run_app.py时出现错误“ ImportError:无法导入名称'flask_app'”
这是我的目录结构。
my_project
- webapp
- __init__.py
- helpers.py
- c_data.py
- run_app.py
每个文件的内容:
__init__.py
"""This is init module."""
from flask import Flask
from webapp import c_data
# Place where webapp is defined
flask_app = Flask(__name__)
c_data.py
"""This module will serve the api request."""
from app_config import client
from webapp import flask_app
from webapp import helpers
from flask import request, jsonify
# Select the database
db = client.newDB
# Select the collection
collection = db.collection
@flask_app.route("/")
def get_initial_response():
"""Welcome message for the API."""
# Message to the user
message = {
'apiVersion': 'v1.0',
'status': '200',
'message': 'Welcome to the Flask API'
}
# Making the message looks good
resp = jsonify(message)
# Returning the object
return resp
run_app.py
# -*- coding: utf-8 -*-
from webapp import flask_app
if __name__ == '__main__':
# Running webapp in debug mode
flask_app.run(debug=True)
我究竟做错了什么?
这是因为您在init .py中导入了c_data,这使得递归导入变得更加清楚。您可以导入c_data
并在__init__
内定义flask_app,但是要比c_data
晚一些,但您尚未导入flask_app
。
from webapp import c_data # Remove it, it makes recursive import
# Place where webapp is defined
flask_app = Flask(__name__)
尝试将其删除。 或更改导入c_data的方式。
可能的解决方案,更改您的run_app.py
切记from webapp import c_data
__init__.py
from webapp import c_data
中删除
from webapp import flask_app
from webapp import c_data # New import
if __name__ == '__main__':
# Running webapp in debug mode
flask_app.run(debug=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.