【问题标题】:How to use app.config.from_envvar? (Flask)如何使用 app.config.from_envvar? (烧瓶)
【发布时间】:2013-11-19 02:54:57
【问题描述】:

如何使用 app.config.from_envvar()?

我查看了 Flask 文档并搜索了我所知道的这个主题。

DATABASE = 'flaskr.db'
DEBUG = True
SECRET_KEY = 'development key'

app = Flask(__name__)
app.config.from_envvar(’FLASKR_SETTINGS’, silent=True)

这会从 FLASKR_SETTINGS 加载配置吗?程序如何知道 FLASKR_SETTINGS 是什么?我是否也应该设置这样的东西(配置文件的路径)?:

FLASKR_SETTINGS = desktop/my_flask_project/FlaskConfig

并将前 3 行移动到该文件中,当我运行该文件时,它将被加载?

而我只选择使用这些对吗?在 app.config.from_envvar(这个用于从外部文件加载配置)或 app.config.from_object(name)(这个将在文件中加载配置)之间?我理解正确吗?

【问题讨论】:

    标签: python flask


    【解决方案1】:

    envvarEnvironment Variable 的缩写。如果您使用的是基于 Linux 的操作系统(Ubuntu、Mac 等),那么当您运行普通 shell 时,您可能正在运行bash。要在 bash 中设置环境变量,您只需执行以下操作:

    $ SOME_NAME=some_value
    

    因此,对于从 FLASKR_SETTINGS 环境变量配置自身的 Flask 应用程序,您应该这样做:

    $ FLASKR_SETTINGS=/path/to/settings/file.ext
    $ python your_script.py
    

    Flask 所做的只是将该文件作为普通 Python 文件导入,然后提取文件中的每个 UPPERCASE_ONLY 名称(任何其他 caseCombination 都将被忽略)。

    from_object 也是如此——事实上,from_object 也可以采用 importable 字符串:

    app.config.from_object("importable.configuration")
    

    最后,请注意,您不必只有 一个 配置调用 - 可以使用多个调用:

    app.config.from_object("your.package.default.config")
    app.config.from_envvar("YOUR_APPS_ENVVAR", silent=True)
    

    【讨论】:

    • 所以在我的情况下,如果我只使用来自外部的配置,我只需要 app.config.from_envvar() 而不必使用 app.config.from_object() 对吗?你只是告诉我多个电话是可选的?包含配置代码的文件必须是 .py?或.ext?我在文档中看到它说 .cfg o_O !!!
    • @Team - 正确,您可以根据需要使用from_objectfrom_envvar 的任意组合。至于扩展,它可以是你想要的任何东西(.py.cfg.i-just-made-this-up-right-now ......它们都可以工作)。
    • 我输入了 . venv/bin/activate 然后 export FLASKR_CONFIG=Users/Team/desktop/flask\ project/flaskr/config.py 然后是 python flaskr.py 然后它有错误 SyntaxError: Non-ASCII character '\xe2' in file flaskr.py on第 8 行,但没有声明编码;有关详细信息,请参阅python.org/peps/pep-0263.html (venv)Tammarats-MacBook-Air:flaskr Team$
    • 我找到了,它是关于使用 '' 而不是 "" 所以为什么他们把 '' 放在网站上 OMG - -" 非常感谢 Sean Vieira 先生,你很摇滚
    • @Team - 看起来 PDF 有正确的大括号,而不是 Python 字符串需要使用的单引号撇号。正如您所发现的,用撇号或双引号替换它可以解决问题:-)
    【解决方案2】:

    这会从环境变量指示的文件中加载 Flask 配置。

    这在此处的文档中有介绍:http://flask.pocoo.org/docs/config/#configuring-from-files

    $ export YOURAPPLICATION_SETTINGS=/path/to/settings.cfg
    $ python run-app.py
     * Running on http://127.0.0.1:5000/
     * Restarting with reloader...
    

    http://en.wikipedia.org/wiki/Environment_variable

    【讨论】:

      猜你喜欢
      • 2015-09-14
      • 1970-01-01
      • 2013-07-27
      • 2012-06-16
      • 2018-04-15
      • 2016-03-19
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多