通常,从可配置文件加载配置是个好主意。这是
from_envvar()
可以执行的操作,替换上面的from_object()
行:
app.config.from_envvar('FLASKR_SETTINGS', silent=True)
这样,有人可以设置一个名为
FLASKR_SETTINGS
的环境变量来指定要加载的配置文件,然后覆盖默认值。如果没有设置这样的环境密钥,静默开关只会告诉Flask不要抱怨。
我对环境变量不太熟悉。我想简单地解释一下上段。我最好的猜测是,当程序读取FLASKR_SETTING
这意味着在我自己的计算机上我已经设置了一个映射到该文件的名称,其中包含一个称为环境变量的名称?我以前搞过我的环境路径,说实话我还是不明白,所以我来这里寻找一个明确的答案
答案 0 :(得分:3)
环境变量是为计算机上运行的特定进程(Windows或UNIX / LINUX等)定义的名称,值对。它们不是文件。您可以创建自己的环境变量并为其指定任何名称/值。例如,FLASKR_SETTING是可以将值设置为配置文件的环境变量的名称。例如,在UNIX终端上,您可以执行以下操作:
export FLASKR_SETTING = /somepath/config.txt
通过执行上述操作,您刚刚创建了一个名为FLASKR_SETTING的环境变量,其值设置为/somepath/config.txt。使用环境变量的原因是因为您可以将它们绑定到某个进程并在进程启动时按需使用。您不必担心将它们保存在文件中。实际上,您可以在开始使用应用程序之前为流程/应用程序创建可以设置各种环境变量的启动脚本。
对于flask,app.config.from_envvar('FLASKR_SETTINGS',silent = True)将FLASKR_SETTINGS的值设置为env中的值。变量。所以它基本上转化为:
- Find the config file (/somepath/config.txt etc.)
- lets say the contents of config file is:
SECRET_KEY="whatever"
DEBUG = True
- Then using the 2 above, it will be translated to:
app.config['SECRET_KEY'] = "whatever"
app.config['DEBUG'] = True
因此,您可以根据需要更新配置文件,而无需更改代码。
答案 1 :(得分:2)
环境变量是一种将信息传递给程序的简单方法。在unixy机器上,从命令shell开始,它就像
一样简单export FLASKR_SETTINGS=/path/to/settings.conf
/path/to/program
这在安装程序以在重新启动时启动时尤其有用;配置可以很容易地包含在启动系统程序的相同设置脚本中。