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

如何在Flask配置文件中设置FLASK_ENV环境变量?

解决Flask配置文件设置FLASK_ENV不生效的问题

我明白你不想每次手动导出环境变量的痛点——个人项目图方便确实没必要拘泥于最佳实践,咱们直接说问题的核心和解决方案:

为什么你的配置文件设置没生效?

关键在于:FLASK_ENV是Flask启动命令(flask run)优先读取的系统环境变量,不是app.config里的配置项。你在flask.cfg里设置FLASK_ENV='development'后,app.config['ENV']能读到值,但flask run启动时根本不会看这个——它只会先查系统环境变量里的FLASK_ENV,默认是production,所以才会启动生产服务器。

两种可行的解决方法

方法1:用自定义启动脚本替代flask run

如果想完全用配置文件管理,你可以写一个简单的启动脚本(比如run.py),手动把配置文件里的环境变量同步到系统环境中,再启动Flask:

from flask import Flask
import os

app = Flask(__name__)
# 加载你的配置文件
app.config.from_pyfile("flask.cfg")

# 把配置里的ENV同步到系统环境变量,让Flask启动时能读到
os.environ["FLASK_ENV"] = app.config["ENV"]
# 如果需要调试模式,也可以同步FLASK_DEBUG
if app.config.get("DEBUG"):
    os.environ["FLASK_DEBUG"] = "1"

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

之后直接运行python run.py就行,这样Flask就会根据你配置文件里的ENV启动对应的服务器了。

方法2:把环境变量写到shell配置文件里(更简洁)

如果你还是想用flask run命令,最简单的方式是把环境变量加到你的shell配置文件中,这样每次登录都会自动加载:

  • 如果你用bash,编辑~/.bashrc文件,添加:
    export FLASK_ENV=development
    export FLASK_DEBUG=1  # 可选,开启调试模式
    
  • 如果你用zsh,编辑~/.zshrc,同样加上面的内容。

保存后运行source ~/.bashrc(或source ~/.zshrc),之后再执行flask run就会自动用开发环境启动了。

补充说明

虽然官方不建议在配置文件或代码里硬编码ENV和DEBUG(主要是怕不小心把生产环境的配置提交到版本库),但个人项目完全可以这么玩——毕竟自己的代码自己说了算😉

内容的提问来源于stack exchange,提问作者Mote Zart

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:30:04