重构Flask为包后无法设置FLASK_APP,flask shell启动报错
问题描述
将Flask项目重构为包结构后,无法通过设置FLASK_APP环境变量来使用flask shell操作SQLite数据库。在PowerShell中执行命令:
(.venv) PS C:\Users\sample projects\flask_blog> set FLASK_APP=flaskblog
之后运行flask shell出现报错:
Usage: flask shell [OPTIONS] Try 'flask shell --help' for help. Error: Could not locate a Flask application. Use the 'flask --app' option, 'FLASK_APP' environment variable, or a 'wsgi.py' or 'app.py' file in the current directory.
但直接执行python run.py可以正常启动应用。
项目文件结构:
- 根目录:
flask_blogrun.pyflaskblog(包目录)__init__.pyroutes.pysite.db(SQLite数据库文件)
flaskblog/__init__.py代码:
from flask import Flask from flask_sqlalchemy import SQLAlchemy app= Flask(__name__) app.config['SECRET_KEY']= '' app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///site.db' db= SQLAlchemy(app) from flaskblog import routes
run.py代码:
from flaskblog import app if __name__ =='__main__': app.run(debug= True)
解决方案
修正PowerShell环境变量设置命令:在PowerShell中不能用CMD的
set语法设置环境变量,需改用PowerShell专属语法:$env:FLASK_APP="flaskblog"设置完成后再运行
flask shell即可正常进入。直接指定应用(无需设置环境变量):可以跳过环境变量设置,直接在命令中明确指定应用:
flask --app flaskblog shell补充说明:
python run.py能正常运行是因为脚本直接从flaskblog包导入了app实例并启动;而flask命令需要正确识别包中的app实例,因此必须确保环境变量设置正确,或通过--app参数明确指定应用位置。
内容的提问来源于stack exchange,提问作者unnk
相关产品推荐
相关产品推荐

