Flask ImportError: невозможно импортировать имя (для приложения в __init__.py) - PullRequest
0 голосов
/ 17 января 2019

Я новичок в флешке и REST-API / серверных сценариях в целом. Я получаю сообщение об ошибке «ImportError: невозможно импортировать имя« flask_app »» при попытке выполнить run_app.py

Это моя структура каталогов.

my_project
        - webapp
              - __init__.py
              - helpers.py
              - c_data.py 

        - run_app.py

Содержимое каждого файла:

__ __ INIT. Ру

"""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)

Что я делаю не так?

1 Ответ

0 голосов
/ 17 января 2019

Это потому, что вы импортируете c_data в init .py, это делает рекурсивный импорт. Чтобы быть более понятным, вы импортируете c_data и определяете flask_app внутри __init__, но позже 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 flask_app
from webapp import c_data  # New import

if __name__ == '__main__':
    # Running webapp in debug mode
    flask_app.run(debug=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...