我在学习Python的Flask教程,无法理解这段文字
通常,从一个可配置的文件中加载设置是个好主意。这就是
from_envvar()
的作用,它可以替代上面提到的from_object()
这一行:
app.config.from_envvar('FLASKR_SETTINGS', silent=True)
这样,别人就可以设置一个叫
FLASKR_SETTINGS
的环境变量,来指定要加载的配置文件,这样就可以覆盖默认的设置。这里的 silent 参数只是告诉 Flask,如果没有设置这个环境变量,就不要发出警告。
我对环境变量不是很熟悉。能不能用简单的语言解释一下上面的内容?我猜测当程序读取 FLASKR_SETTINGS
时,是不是意味着我在自己电脑上设置了一个叫这个名字的文件的映射,使用了所谓的环境变量?我之前弄过环境路径,老实说我还是不太明白,所以我来这里寻求一个清晰的答案。
2 个回答
环境变量是一种简单的、临时的方法,用来把信息传递给程序。在类Unix的机器上,从命令行输入就很简单:
export FLASKR_SETTINGS=/path/to/settings.conf
/path/to/program
这在安装一些程序时特别有用,比如那些需要在重启后自动启动的程序;你可以很方便地把这些设置放在同一个安装脚本里,这样就能启动系统程序了。
环境变量是一种由名称和值组成的配对,它们是为计算机上运行的特定进程定义的(比如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的值设置为环境变量中的值。所以这基本上可以理解为:
- 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
这样一来,你只需要根据需要更新配置文件,就不需要修改你的代码了。