Конфигурационный класс Flask - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь настроить классы конфигурации для своего проекта, но я не могу понять, как правильно их импортировать.

Структура проекта:

-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, как я сделал, должна в соответствии с документами указывать путь для файлов конфигурации относительно каталога экземпляра. Теперь я обращаюсь к ним по отношению к корню проекта ...

...