Flask web 第七章的问题 -----关于命令无法正确显示


#1

代码:@app.cli.command()
@click.option(’–drop’, is_flag=True, help=‘Create after drop.’)
def initdb(drop):
“”“Initialize the database.”""
if drop:
click.confirm(‘This operation will delete the database, do you want to continue?’, abort=True)
db.drop_all()
click.echo(‘Drop tables.’)
db.create_all()
click.echo(‘Initialized database.’)`

运行时会报没有创建表格,使用该初始化命令时会出现没有该命令,输入 flask --help后,并没有该命令
请问这是为什么?


#2

源码有改动吗?使用什么命令安装的依赖?

猜测是因为依赖 Faker 没有安装,如果使用 Pipenv,安装方式如下:

$ pipenv install faker

如果使用 pip,则激活虚拟环境后执行下面的命令:

$ pip install faker

#3

对照着源代码编写了setting.py _init_py以及模版表单视图函数,commands.py 是复制源代码的
代码如下


使用pip 安装的
commands 定义的命令initdb不存在,faker安装了,使用源代码可以运行,也有该命令,这是为何


#4

依赖包 Faker 安装了吗?


#5

已经安装了 并且其他源代码均可使用


#6

请发一下完整的 flask --help 命令输出,包括输入命令那一行。


#7

C:\Users\Administrator\PycharmProjects\hi>flask --help
Traceback (most recent call last):
File “c:\users\administrator\appdata\local\programs\python\python37\lib\site-packages\flask\cli.py”, line 529, in list_commands
rv.update(info.load_app().cli.list_commands(ctx))
File “c:\users\administrator\appdata\local\programs\python\python37\lib\site-packages\flask\cli.py”, line 384, in load_app
'Could not locate a Flask application. You did not provide ’
flask.cli.NoAppException: Could not locate a Flask application. You did not provide the “FLASK_APP” environment variable, and a “wsgi.py” or “app.py” module was not found in the current
directory.
Usage: flask [OPTIONS] COMMAND [ARGS]…

A general utility script for Flask applications.

Provides commands from Flask, extensions, and the application. Loads the
application defined in the FLASK_APP environment variable, or from a
wsgi.py file. Setting the FLASK_ENV environment variable to ‘development’
will enable debug mode.

> set FLASK_APP=hello.py
> set FLASK_ENV=development
> flask run

Options:
–version Show the flask version
–help Show this message and exit.

Commands:
db Perform database migrations.
routes Show the routes for the app.
run Runs a development server.
shell Runs a shell in the app context.

C:\Users\Administrator\PycharmProjects\hi>


#8

命令输出的开始很明显是报错,下次请给出完整的命令输出:sweat:

有两个问题:

  • 没有激活虚拟环境。
  • 没有使用 FLASK_APP 环境变量指定要运行的程序。要么使用 .flaskenv 文件(结合 python-dotenv)给出,要么手动设置。

#9

好的 后面我会继续研究 非常感谢


#10

不客气。一些小建议:

  • 不要使用截图给出代码、错误信息、命令行输出
  • 给出完整的命令行输出,包括输入命令那一行
  • 按照书里的命令执行,比如这个项目给出在章节一开始给出的依赖安装命令为 pipenv install --dev

更多信息请参考论坛说明