Параметр конфигурации не читает из других мест - PullRequest
0 голосов
/ 13 июня 2018

Параметр не читается из файлов, отличных от run.py.run.py - это скрипт запуска Flask

из run.py:

from flask import Flask
app = Flask(__name__)
print(app.config["PARAMETER"])

Из любого другого файла python в проекте возвращается следующая ошибка:

KeyError: 'PARAMETER'

Какчитать файл конфигурации из других мест внутри проекта, кроме файла сценария запуска?

Обновление:

Чтение файла конфигурации:

app.config.from_pyfile(os.path.join(".", "myconfig.conf"))

Содержимое файла myconfig.conf:

PARAMETER = "test"

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Я думаю, вы просто пропустили загрузку параметров.

Если вы выполняете встроенную загрузку параметров, вы бы указали это как:

from flask import Flask
app = Flask(__name__)
app.config['PARAMETER_1'] = 'test'
assert app.config["PARAMETER_1"] == 'test'

Код выше работает, теперь как можнозагрузить похожие данные из файла?

# prepare file 
from pathlib import Path
Path("myconfig.conf").write_text("PARAMETER_2 = 'test2'\n")

# load it    
app.config.from_pyfile("myconfig.conf")
# test it
assert app.config["PARAMETER_2"] == 'test2'
0 голосов
/ 13 июня 2018

Вы не можете напечатать ключ PARAMETER после создания app, поскольку в его конфигурационном объекте нет ключа, имя которого равно PARAMETER.Для этого сначала создайте приложение, импортируйте простой объект, который содержит конфигурацию, а затем используйте app.config.from_object(Config)

#config.py
class Config(object):
    PARAMETER = 'my-parameter-value'
    #you can add another keys
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'


#__init__.py
from config import Config

app = Flask(__name__);
app.config.from_object(Config)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...