Не удается импортировать приложение из колбы приложения (Неизвестное местоположение)

#python #flask

Вопрос:

Терминальный Дамп —

  * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
Usage: flask run [OPTIONS]
Try 'flask run --help' for help.

Error: While importing 'microblog', an ImportError was raised:

Traceback (most recent call last):
  File "/home/iglu/repos/personal/Flask Mega Tutorial/microblog/venv/lib/python3.9/site-packages/flask/cli.py", line 256, in locate_app
    __import__(module_name)
  File "/home/iglu/repos/personal/Flask Mega Tutorial/microblog/microblog.py", line 1, in <module>
    from app import app
ImportError: cannot import name 'app' from 'app' (unknown location)
 

Структура файла-

 ├── app
│   ├──  __init__.py
│   ├── __pycache__
│   │   └── microblog.cpython-39.pyc
│   └── routes.py
├── microblog.py
├── __pycache__
│   └── microblog.cpython-39.pyc
├── README.md
└── venv
 

init.py

 from flask import Flask

app = Flask(__name__)

from app import routes
 

routes.py

 from app import app

@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"
 

microblog.py

 from app import app
 

Переменная python действительно установлена в одно изображение venv

Python 3.9.5 Flask 2.0.1 Werkzeug 2.0.1

Любая помощь была бы великолепна! Я изо всех сил старался точно следовать руководству.

Ответ №1:

Основываясь на вашей файловой структуре, python никоим образом не узнает о ее microblog.py существовании. Это потому, что при вводе from app import app python будет искать пакет app

Так вот, ваш microblog.py товар не входит в комплект app поставки. Итак, попробуйте переместить его в папку приложения (точнее, в пакет, потому что любая папка, имеющая инициализацию, называется пакетом), и он будет работать нормально.

Комментарии:

1. Э-э-э, возможно, я уже все исправил. Это была просто опечатка в init.py имя файла, в нем есть пробел. Моя файловая структура работала :P.

2. о, прекрасно. Сначала я думал, что это из-за того, как вы обращались microblog.py в вашем приложении. В любом случае, рад, что у вас все получилось!

Ответ №2:

Исправлено, это была опечатка, это была просто опечатка в init.py имя файла.

Не могу закрыть, так что считайте, что он закрыт