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

如何正确从.flaskenv文件读取配置值到Flask应用的app.py文件?

解决Flask从.flaskenv读取环境变量的问题

嘿,这个问题我之前也碰到过,咱们一步步来搞定它!

首先,你之前用os.SQL_PW报错的原因很简单:os模块不会把环境变量直接作为自身的属性暴露出来,你得用专门的方法去读取它们。

正确的操作步骤:

1. 确保.flaskenv的格式正确

你的.flaskenv文件里的变量定义没问题,就保持:

SQL_PW=myFakePassword

注意不要给密码加引号(除非密码里包含空格或特殊字符,这时候可以用双引号包裹)。

2. 在app.py里正确读取环境变量

用os.getenv()方法来读取,这个方法能安全地获取环境变量,还可以设置默认值(防止变量不存在时出错)。推荐用f-string来拼接数据库URI,比字符串拼接更清晰:

from flask import Flask , render_template , request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
import os

app = Flask(__name__)

# 读取环境变量,第二个参数是可选的默认值
db_pw = os.getenv('SQL_PW')
# 或者如果想确保变量存在,可以加个判断
if not db_pw:
    raise ValueError("SQL_PW环境变量未在.flaskenv中设置")

app.config['SQLALCHEMY_DATABASE_URI'] = f'postgresql+psycopg2://postgres:{db_pw}@localhost/quotes'

3. 确保环境变量被正确加载

Flask 1.0及以上版本会自动加载项目根目录下的.flaskenv文件,只要你用flask run命令启动应用就行。但如果是用python app.py直接运行,Flask不会自动加载这个文件,这时候你需要手动安装并使用python-dotenv:

  • 先安装依赖:
pip install python-dotenv
  • 然后在app.py的最开头添加加载代码:
from dotenv import load_dotenv
# 加载.flaskenv文件(默认会找项目根目录的.env或.flaskenv)
load_dotenv()

额外的最佳实践

  • 一定要把.flaskenv添加到.gitignore里,绝对不能把包含敏感信息的文件推送到GitHub!
  • 生产环境中,建议用服务器的环境变量设置(比如Docker、云平台的配置),而不是依赖.flaskenv文件,更安全。

内容的提问来源于stack exchange,提问作者David Reke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:12:35