【问题标题】:app_config[config_name] getting KeyError null value for flask environmentapp_config [config_name] 获取烧瓶环境的 KeyError 空值
【发布时间】:2018-03-21 06:27:00
【问题描述】:

我正在通过引用此代码在烧瓶环境中的 python 中创建员工管理软件

https://github.com/littlewonder/squadmaster

我已经安装了 pip、flask 和其他相关库。我还创建了虚拟环境。我也将项目文件夹放在了 flask 中。

side flask文件夹中的文件夹结构是这样的

当我尝试调整 run.py 时。它给了我错误

app.config.from_object(app_config[config_name]) KeyError: None

这是我的 run.py 文件

import os

from app import create_app

config_name = os.getenv('FLASK_CONFIG')
app = create_app(config_name)

if __name__ == '__main__':
    app.run()

我也遇到过类似的问题

Flask does not load configuration

我已经实现了它的解决方案并使用了这些字符串

app.config.from_object('myapplication.default_settings')

app.config.from_object('my_app.config.{}'.format(config_name))

我已将 FLASK_CONFIG 设置为文档中的上部 我已将 FLASK_CONFIG 设置为系统构建路径中的环境变量。但它导致我出错,因为 KeyError = "full path" 。

我也尝试过设置 FLASK_CONFIG ='发展' 和 FLASK_CONFIG =DevelopmentConfig

如 config.py 中所述

app_config = {
    'development': DevelopmentConfig,
    'production': ProductionConfig
}

我还能尝试什么来提示出现了什么问题。需要一些建议

【问题讨论】:

  • 你是怎么设置FLASK_CONFIG然后启动run.py的?
  • 我设置为环境变量。它给了我 keyerror="environment path"
  • 但是在你的问题中有KeyError: None。我不清楚您实际运行了哪些代码以及您只尝试了哪些代码。
  • yes KeyError: None when I didn't set "flask_config" as environment variable 。当我将“flask_config”设置为环境变量时。我得到了 KeyError =“flask_config 环境变量路径”

标签: python flask config


【解决方案1】:

第一个问题可以用合理的默认值解决:

config_name = os.getenv('FLASK_CONFIG') or 'default'

或者只是os.getenv('FLASK_CONFIG', 'default'),这里默认的含义可以在config.app_config中设置

app_config = {
    'development': DevelopmentConfig,
    'production': ProductionConfig,
    'default': ProductionConfig
}

app_config 将名称映射到具有配置的对象。也允许以字符串形式引用,但可以直接将对象传递给.from_object):

app.config.from_object(app_config[config_name])

存储的配置数据,例如DevelopmentConfig 必须包含数据项作为其属性。它可以是一个类。

【讨论】:

  • 我在 app.config.from_object(app_config[config_name]) 这一行得到一个错误,所以如果我这样传递它,为什么会得到 KeyError: None?
  • @FeridSejdović 我不知道这么简短的描述。您可以添加一些调试打印语句来查看分配给 config_name 或其他相关变量的内容。
  • 简单地说,KeyError: None 看看这个:google.com/amp/s/scotch.io/tutorials/…
  • @FeridSejdović 但该代码与我的回答不同。有一个简单的os.getenv 没有默认值。我猜FLASK_CONFIG未在环境中设置可能是KeyError的原因。
  • 我知道先生,我在询问那条特定的行,我是 Python 世界的新手,无论如何,谢谢。问候。
【解决方案2】:

对于 Linux 第一种类型: 导出 FLASK_ENV=development

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 2012-01-28
    • 2016-03-30
    • 2021-12-04
    • 2019-10-04
    • 2020-11-23
    • 2018-11-28
    • 2023-01-02
    相关资源
    最近更新 更多