Я пытаюсь настроить классы конфигурации для своего проекта, но я не могу понять, как правильно их импортировать.
Структура проекта:
-project
-instance
-config.py
-service
-__init__.py
config.py:
class DefaultConfig(object):
DEBUG = True
class ProductionConfig(DefaultConfig):
DEBUG = False
1010 * INIT * .py:
from flask import Flask
def create_app():
app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config.ProductionConfig')
return app
Чтобы запустить приложение, я сделал:
set FLASK_APP=service
set FLASK_ENV=production
FLASK run
Стоя в папке project
Это дает мне эту ошибку:
ImportStringError: import_string() failed for 'config'. Possible reasons are:
- missing __init__.py in a package;
- package or module path not included in sys.path;
- duplicated package or module name taking precedence in sys.path;
- missing module, class, function or variable;
Debugged import:
- 'config' not found.
Original exception:
ModuleNotFoundError: No module named 'config'
Я думаю, что путь не верен.
Я следовал этому примеру, где они говорят об использовании наследования для папок конфигурации и экземпляра. Это имело много смысла, когда я читал это, но я, должно быть, сумел неправильно истолковать неотъемлемую часть.
РЕДАКТИРОВАТЬ: Теперь это работает. Вместо просто
app.config.from_object('config.DefaultConfig')
я должен был сделать
app.config.from_object('instance.config.DefaultConfig')
Я думаю, что это действительно сбивает с толку, потому что установка instance_relative_config
в значение True, как я сделал, должна в соответствии с документами указывать путь для файлов конфигурации относительно каталога экземпляра. Теперь я обращаюсь к ним по отношению к корню проекта ...