3

通常,从可配置文件加载配置是个好主意。这是from_envvar()可以做的,替换from_object()上面的行:

app.config.from_envvar('FLASKR_SETTINGS', silent=True)

这样,有人可以设置一个环境变量FLASKR_SETTINGS来指定要加载的配置文件,然后该配置文件将覆盖默认值。如果没有设置这样的环境键,静默开关只是告诉 Flask 不要抱怨。

我对环境变量不太熟悉。我想简单地解释一下上面的段落。我最好的猜测是,当程序读取时FLASKR_SETTING,这是否意味着在我自己的计算机上,我已经使用称为环境变量的名称设置了到该文件的映射?我之前弄乱了我的环境路径,老实说我还是不明白,所以我来这里寻找一个明确的答案

4

2 回答 2

3

环境变量是为计算机(Windows 或 UNIX/LINUX 等)上运行的特定进程定义的名称、值对。它们不是文件。您可以创建自己的环境变量并为其指定任何名称/值。例如,FLASKR_SETTING 是环境变量的名称,其值可以设置为配置文件。例如,在 UNIX 终端上,您可以执行以下操作:

export FLASKR_SETTING = /somepath/config.txt

通过执行上述操作,您刚刚创建了一个名为 FLASKR_SETTING 的环境变量,其值设置为 /somepath/config.txt。您使用环境变量的原因是因为您可以将它们绑定到某个进程并在您的进程启动时按需使用。您不必担心将它们保存在文件中。事实上,您可以为您的进程/应用程序创建一个启动脚本,该脚本可以在您开始使用应用程序之前设置各种环境变量。

在烧瓶的情况下, 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

因此,您可以根据需要更新配置文件,而无需更改代码。

于 2013-03-21T00:56:02.787 回答
2

环境变量是一种将信息传递给程序的简单、临时的方式。在 unixy 机器上,从命令外壳,它就像

export FLASKR_SETTINGS=/path/to/settings.conf
/path/to/program

这在安装程序以在重新启动时启动时特别有用;配置可以很容易地包含在启动系统程序的同一设置脚本中。

于 2013-03-20T20:42:16.110 回答