Не удается импортировать функцию из модуля Python

Здесь init.py имеет функцию create_app, и я не могу импортировать функцию в main.py.

Я прикрепил main.py и init.py [введите здесь описание изображения ]( https://i.stack.imgur.com/E9YMh.png)

Он продолжает давать ImportError: невозможно импортировать имя «create_app» с «веб-сайта» (неизвестное местоположение)

Я попытался импортировать init, но он тоже не работает.

Отвечает ли это на ваш вопрос? Относительный импорт в миллиардный раз

Marcelo Paco 15.04.2023 23:56

Пожалуйста, прочитайте Почему я не должен загружать изображения кода/данных/ошибок? . Вместо этого отформатируйте код как блок кода. Самый простой способ сделать это — вставить код в виде текста прямо в ваш вопрос, затем выделить его и нажать кнопку блока кода.

Chris 17.04.2023 03:20
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
54
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ошибка возникает из-за оператора 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, но в руководстве говорится, что папка веб-сайта будет преобразована в пакет, поэтому мы можем импортировать ее таким образом.

Prince mehta 16.04.2023 00:29

Я думаю, вам обязательно стоит попробовать написать 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

Другие вопросы по теме