配置参数不从其他位置读取

时间:2018-06-13 09:41:59

标签: python flask

不会从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 :(得分:1)

我认为你只是错过了加载参数。

如果您对参数进行内联加载,则将其指定为:

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'

答案 1 :(得分:0)

创建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)