使用flask run命令无需设置环境变量开启Flask debug模式是否可行?
问题根因
- 使用
flask run启动应用时,Flask会在加载你的应用代码前优先读取系统环境变量判断运行模式,你写在app.config中的DEBUG、ENV配置优先级低于预读取的环境变量,所以不生效 if __name__ == "__main__"包裹的代码只有直接运行python main.py时才会执行,flask run启动时脚本是作为模块导入的,这部分代码不会触发
可用解决方案
方案1:使用.flaskenv配置文件(最符合官方规范)
这是官方推荐的持久化配置Flask启动参数的方法,不需要每次手动设置环境变量:
- 先安装依赖:
pip install python-dotenv - 在项目根目录创建名为
.flaskenv的文件,写入以下内容:
FLASK_APP=main.py FLASK_ENV=development FLASK_DEBUG=1
- 直接运行
flask run就会自动读取文件内的配置,自动开启debug和热重载模式
方案2:启动命令合并环境变量
如果不想新增配置文件,可以直接把环境变量写在启动命令同一行,每次运行只需输入一行命令:
FLASK_ENV=development flask run
方案3:代码内强制设置环境变量
如果不想改启动命令也不想加配置文件,可以在代码最开头通过os模块提前设置环境变量,调整后的代码如下:
import os # 要在创建Flask实例前设置环境变量 os.environ["FLASK_ENV"] = "development" os.environ["FLASK_DEBUG"] = "1" from flask import Flask app = Flask(__name__) @app.route('/') def home(): return '<h1>debugging!</h1>' if __name__ == "__main__": app.run(debug=True)
调整后不管用python main.py还是flask run启动,都会自动开启debug模式。
内容的提问来源于stack exchange,提问作者askman
相关产品推荐
相关产品推荐

