【发布时间】:2018-09-09 05:03:49
【问题描述】:
我正在尝试使用一些附加参数来运行我的 Flask 应用程序。我使用点击并面临以下问题。如果我不使用任何参数而只使用常规的烧瓶运行命令,则应用程序正在运行但忽略我的附加参数。
python -m flask run
如果我运行自定义命令,应用程序会执行命令代码但不会运行应用程序本身:
python -m flask dbinit -u
相反,它只是通过并显示以下消息:“ D:..\main.py:18: 警告:静默忽略 app.run() 因为应用程序是从烧瓶命令行可执行文件运行的。考虑将 app.run() 放在 if ____name____ == "____main____" 守卫之后以消除此警告。"
代码:
import click
from flask.cli import with_appcontext
from app import create_app, init_database
app = create_app()
@app.cli.command()
@with_appcontext
@click.option('-u', 'dbopt', flag_value='upgrade',
default='')
@click.option('-c', 'dbopt', flag_value='create',
default='')
def dbinit(dbopt):
print('init db', dbopt)
init_database(dbopt)
app.run(debug=False) # not working
我有 env var FLASK_APP='myapp'。
代码在 Win7 上运行。我从这里http://flask.pocoo.org/docs/1.0/cli/#custom-commands
我做错了什么?谢谢。
【问题讨论】:
-
使用
set FLASK_APP=yourapp.py,然后尝试在没有python的情况下使用flask run和flask dbinit -
@DarkSuniuM,我已经设置了 FLASK_APP。我尝试在没有python的情况下使用flusk命令,结果是一样的:当我使用flask run时,它会运行但忽略标志,如果我使用flask dbinit,它会进入命令但不运行应用程序。
标签: flask