2013-03-20 58 views
3

通常情况下,它是从配置文件加载配置一个好主意。这是from_envvar()可以做,取代上述from_object()行:林在烧瓶教程蟒开始,我不明白这一段

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

这样,有人可以设置所谓FLASKR_SETTINGS指定要加载那么这将覆盖默认值的配置文件中的环境变量。如果没有设置这样的环境密钥,无声开关只是告诉Flask不要抱怨。

我不是太熟悉的环境变量。我想简单地解释一下上面的段落。我最好的猜测是,当程序读取FLASKR_SETTING这是否意味着在我自己的计算机上,我已经建立了一个名为环境变量的名称映射到该文件的名称?香港专业教育学院与我的环境路径搞砸前,说实话,我还是不明白,所以我来到这里寻找一个明确的答案

回答

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 

所以这种方式,您可以根据需要只更新配置文件,你会不会需要改变你的代码。

+0

感谢,这和对方的回答帮了不少忙。我只剩下一点困惑。你说通过创建一个名为FLASKR的环境变量,它会创建一个设置为配置文本文件的“值”。这是什么价值。我应该打开配置并放入数据库配置,以便当我的程序执行app.config ['flaskr']时,它会转到配置文本文件并查看我的设置并加载它们? – gallly 2013-03-21 16:25:03

+0

实际上我做了一个更正和一些编辑来解释这个更好。看到我编辑的答案。环境变量只是指向具有像DEBUG = True等实际配置细节的配置文件。 – codegeek 2013-03-21 18:27:05

2

环境变量是将信息传递给程序的简单,特别的方式。在unixy机,从命令外壳,它是那样简单

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

安装程序在重启启动时,这是非常有用的;该配置可以很容易地包含在启动系统程序的相同设置脚本中。