Не удается импортировать модули приложения, реализующие интерфейс командной строки Flask

1

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

колба 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)
  • 0
    и __init__.py находится в каталоге src ? Это немного неясно из скопированного файлового дерева.
  • 0
    У меня возникли проблемы с чтением вашего дерева, но я думаю, что файл __init__.py каталоге src/ отсутствует, как упоминалось ранее @Joost
Показать ещё 4 комментария
Теги:
flask
command-line-interface

2 ответа

0
Лучший ответ

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

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

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

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

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

__

0

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

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

import models.user_models as users

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

import models.user_models as users
users.some_function_name()
  • 0
    Извините, я считаю, что у меня неправильная древовидная структура. Извиняюсь за ошибку. Файл command.py находится не на том же уровне, что и модели, он находится в корневом каталоге приложения. models находится в каталоге src .
  • 0
    Я попытался поместить command.py на тот же уровень, что и command.py models , и решение, которое вы предоставили, тоже не работает. Та же ошибка.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню