You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask与Python读取配置文件属性时返回None的问题

问题分析与解决方案

我来帮你捋捋为什么读取不到配置内容——核心问题出在Flask加载配置文件的规则上,咱们一步步拆解:

1. 配置文件的语法不符合Python规范

Flask的app.config.from_pyfile()方法是把目标文件当作Python模块来执行的,所以文件里的内容必须是合法的Python代码。你写的myvar1="tester"虽然看起来像赋值,但严格来说不符合Python的常规语法(等号两边没有空格),虽然Python解释器能勉强解析,但有时候会因为文件编码、隐形字符等问题导致加载失败,更稳妥的写法是遵循Python的赋值规范:

myvar1 = "tester"
myvar2 = "tester"
myvar3 = "tester"

2. 路径验证(虽然你没报错,但还是确认下)

你设置了silent=False,如果配置文件路径错误,Flask会直接抛出异常,所以你没报错说明路径是对的,但还是要确认:运行Flask脚本的当前工作目录是项目根目录(也就是包含config文件夹的那个目录)。比如如果你的脚本在src/app.py里,那os.path.join('.', 'config/app.conf')会指向src/config/app.conf,而不是项目根目录的config/app.conf——不过你没报错的话这条应该没问题。

3. 关于from_pyfile的返回值

你把app.config.from_pyfile()的结果赋值给了my_config,但这个方法返回的是布尔值(加载成功返回True,失败返回False,仅当silent=True时),不是配置字典,所以my_config其实只是个成功标记,不是你要的配置内容,不过这不是你获取不到配置项的直接原因。

修正后的代码示例

先把config/app.conf改成标准Python赋值格式,然后可以调整代码如下:

from flask import Flask
import os

app = Flask(__name__)

# 加载配置文件,可添加加载成功判断
config_loaded = app.config.from_pyfile(os.path.join('.', 'config/app.conf'), silent=False)
if not config_loaded:
    raise RuntimeError("Failed to load configuration file")

@app.route('/')
def hello_world():
    myvar1 = app.config.get('myvar1')
    logging_val = app.config.get('LOGGING')
    return f'Hello World! myvar1: {myvar1}, LOGGING: {logging_val}'

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

如果之后你需要加载非Python格式的配置文件(比如.ini或.yaml),可以用对应的解析模块(比如configparser或pyyaml)读取后,再把配置项逐个添加到app.config里。

内容的提问来源于stack exchange,提问作者blue-sky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:10:43