По какой-то причине, когда я пытаюсь выполнить свою собственную команду:

колба create_user

Я получаю сообщение об ошибке, когда пытаюсь импортировать что-либо из папки src:

Файл "/app/backend/flask_app/command.py", строка 17, в импорте seed_db 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)
1
dez 19 Сен 2018 в 18:56

2 ответа

Лучший ответ

Я нашел решение.

Мне пришлось удалить файл корневого каталога __init__.py.

Я нашел этот ответ от известного Мигеля Гринберга:

https://github.com/miguelgrinberg/flasky/issues/310#issuecomment-340641813

Эти файлы (__init__.py) заставляют python полагать, что основной каталог пакета находится на один каталог выше, так что это каталог, который добавляется к пути Python. Обычно вы хотите, чтобы ваш каталог верхнего уровня не был пакетом Python, чтобы текущий каталог находился по пути.

__

1
dez 20 Сен 2018 в 03:07

Речь идет об импорте модулей Python, а не о команде Flask.

Поскольку файл command.py находится на том же уровне, что и папка models , вы можете просто написать:

import models.user_models as users

После этого вы можете получить доступ к модулю user_models из ссылки users :

import models.user_models as users
users.some_function_name()
1
Antonio Romano 19 Сен 2018 в 16:54