Я разрабатываю веб-сайт. Структура проекта
project\
back_end\
__init.py__
main.py
В init.py
from flask import Flask
def create_app():
app = Flask(__name__)
return app
В main.py
from back_end import create_app
app = create_app()
@app.route("/")
def home():
return "hello world"
Когда я нажимаю «Выполнить» в VS Code, возникает ошибка ModuleNotFoundError
: нет модуля с именем «back_end».
Набираю python -m back_end.main
в командной строке, код работает. Я также попытался переименовать пакет back_end в b. Ошибка все еще сохраняется. Связано ли это с определением переменной среды? Я использую Ubuntu 24.04.
Во-первых, это __init__.py
не __init.py__
.
Во-вторых, ваш файл main.py
должен находиться в каталоге project/
, а не project/back_end/
. Пересмотренная файловая структура будет выглядеть так:
project\
back_end\
__init__.py
main.py
Кроме того, для простого проекта, подобного описанной вами структуре, вам не понадобится иметь несколько таких файлов. Одного файла main.py
вполне хватило бы.
Как отметил @DeepThought42, имя файла должно быть __init__.py
, а структура проекта должна выглядеть следующим образом:
project
├── back_end
│ └── __init__.py
└── main.py
main.py
находится за пределами вашего каталога «back_end».Кроме того, я не знаю, почему кто-то будет добавлять этот код прямо внутри __init__.py
(не следует!). Вместо этого вы можете использовать следующий подход:
Структура проекта:
project
├── back_end
│ ├── __init__.py
│ └── app.py
└── main.py
И __init__.py
:
# You can leave this file empty
# Read more about it here: https://www.geeksforgeeks.org/what-is-__init__-py-file-in-python/
app.py
:
from flask import Flask
def create_app():
app = Flask(__name__)
return app
main.py
:
from back_end import create_app
app = create_app()
@app.route("/")
def home():
return "hello world"
app.run()
init.py — это тип. Я переместил main.py за пределы back_end. Это сработало. Проект находится в разработке, я просто включил сюда соответствующие файлы.