Не удается импортировать модули приложения, реализующие интерфейс командной строки Flask - PullRequest
0 голосов
/ 19 сентября 2018

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

flask 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)

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

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

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

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

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

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

__

0 голосов
/ 19 сентября 2018

Это вопрос импорта модулей python, а не команды Flask.

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

import models.user_models as users

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

import models.user_models as users
users.some_function_name()
...