По какой-то причине, когда я пытаюсь выполнить свою команду:
колба create_user
Я получаю сообщение об ошибке, когда я пытаюсь импортировать что-либо из папки src:
Файл "/app/backend/flask_app/command.py", строка 17, в seed_db import src.models ModuleNotFoundError: Нет модуля с именем 'src'
/
__init__.py
command.py
run.py
src/
__init__.py
models/
__init__.py
user_model.py
command.py
import click
from flask import Flask
from flask.cli import with_appcontext
app = Flask(__name__)
@app.cli.command()
@with_appcontext
def create_user():
import src.models as models
print("hello")
app.cli.add_command(seed_db)
Я нашел решение.
Мне пришлось удалить файл корня dir __init__.py
.
Я нашел этот ответ от знаменитого Мигеля Гринберга:
https://github.com/miguelgrinberg/flasky/issues/310#issuecomment-340641813
Эти файлы (
__init__.py
) заставляют python полагать, что основной каталог пакета - это один каталог выше, так что это каталог, который добавляется в путь Python. Обычно вы хотите, чтобы ваш каталог верхнего уровня не был пакетом Python, так что текущий каталог переходит к пути.
__
Речь идет о способе импорта модулей python, а не о команде Flask.
Поскольку файл command.py находится на одном уровне с папкой моделей, вы можете просто написать:
import models.user_models as users
После этого вы можете получить доступ к модулю user_models из ссылки на пользователя:
import models.user_models as users
users.some_function_name()
models
находится в каталоге src
.
command.py
на тот же уровень, что и command.py
models
, и решение, которое вы предоставили, тоже не работает. Та же ошибка.
__init__.py
находится в каталогеsrc
? Это немного неясно из скопированного файлового дерева.__init__.py
каталогеsrc/
отсутствует, как упоминалось ранее @Joost