Как правильно использовать from_object во Flask?
Есть некоторое приложение со следующей структурой
notes
.../notes
..../__init__.py
..../config.py
.../run.py
Внутри config.py:
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config:
DEBUG = False
DEVELOPMENT = True
SECRET_KEY = '2222222222222222'
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
class ProductionConfig(Config):
DEBUG = False
DEVELOPMENT = False
class DevelopConfig(Config):
DEBUG = True
В __init__.py:
from flask import Flask
app = Flask(__name__)
app.config.from_object('config.DevelopConfig')
Файл run.py::
from notes import app
if __name__ == '__main__':
app.run()
Получаю следующую ошибку:
ModuleNotFoundError: No module named 'config'
Немного не понимаю в чем ошибка, наверняка что-то делаю не так со структурой. Буду рад любой помощи!
Ответы (1 шт):
Автор решения: cauf
→ Ссылка
Вынесу ответ @mrEvgenX из комментария
В вызове функции from_object нужно указывать полный путь импорта объекта. В документации Flask в примерах указан самый простой способ импорта, так как подразумевается, что модуль с конфигурацией расположен непосредственно рядом с модулем приложения. В вашем же случае, модуль конфигурации находится внутри пакета notes, в связи с чем в определении импорта объекта нужно указать notes.config.DevelopConfig:
# __init__.py
from flask import Flask
app = Flask(__name__)
app.config.from_object('notes.config.DevelopConfig')