繁体   English   中英

Flask ImportError:无法导入名称(对于__init__.py中的应用程序)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM