Здесь init.py имеет функцию create_app, и я не могу импортировать функцию в main.py.
Я прикрепил main.py и init.py [введите здесь описание изображения ]( https://i.stack.imgur.com/E9YMh.png)
Он продолжает давать ImportError: невозможно импортировать имя «create_app» с «веб-сайта» (неизвестное местоположение)
Я попытался импортировать init, но он тоже не работает.
Пожалуйста, прочитайте Почему я не должен загружать изображения кода/данных/ошибок? . Вместо этого отформатируйте код как блок кода. Самый простой способ сделать это — вставить код в виде текста прямо в ваш вопрос, затем выделить его и нажать кнопку блока кода.






Ошибка возникает из-за оператора from ... import ..., потому что вы пытаетесь импортировать папку. Чтобы импортировать файл в эту папку, используйте import website.create_app, хотя это также вызовет ошибку, поскольку файла с именем create_app.py нет. Правильный код будет:
import website.create_app
app = create_app
if __name__ == "__main__":
app.run(debug=True)
Из того, что я вижу на картинке, я предполагаю, что это структура каталогов:
Flask-web-app
├── say-hello
├── website
│ ├── static/
│ ├── templates/
│ ├── __init__.py
│ ├── auth.py
│ ├── models.py
│ └── views.py
└── main.py
Ваш main.py должен содержать:
from website import views #filename should be used here
app = views.app #considering views.py has an app variable defined
if __name__ == '__main__':
app.run(debug=True)
Проблема заключалась в том, как вы использовали относительный импорт.
функция (create_app) определена в файле init.py, но в руководстве говорится, что папка веб-сайта будет преобразована в пакет, поэтому мы можем импортировать ее таким образом.
Я думаю, вам обязательно стоит попробовать написать if __name__ == "__main__": в свой__init__.py. (Это позволит запускать скрипт как отдельную программу)
И тогда вы можете попробовать импортировать функцию create_app в свой main.py из __init__.py с помощью import create_app из __init__.py. Я думаю, что проблема здесь в том, что вместо использования import create_app from website вы должны попытаться напрямую импортировать его из своего __init__.py
Наконец, вы также можете попробовать импортировать все функции из вашего __init__.py, используя from__init__.py import *введите здесь описание изображения. Надеюсь, это поможет вам!
Файл Init.py находится в папке шаблонов, как показано на вашем изображении.
Вы должны импортировать его следующим образом:
from website.templates import create_app
Отвечает ли это на ваш вопрос? Относительный импорт в миллиардный раз