拳打美莉间jio踢嘤鸡立 2022-10-26 08:49 采纳率: 0%
浏览 667
已结题

使用flask run命令时候报错

使用flask run命令时候报错 “ Detected factory 'create_app' in module 'app', but could not call it without arguments. Use 'app:create_app(args)' to specify arguments.”

最近在跟着Flask 狗书 《Flask web开发:基于python的web应用开发实战》学习到第七章时按照组织大型应用的方式重构了以前的练习代码。我将应用实例提到了顶级目录的flasky.py脚本里。然后在app包里设置了工厂函数create_app(config_name)

img

上图是我的目录结构
下面是app包里__init__.py里的代码

from flask import Flask
from flask_bootstrap import Bootstrap
from flask_moment import Moment
from flask_sqlalchemy import SQLAlchemy
from config import config

bootstrap = Bootstrap()
moment = Moment()
db = SQLAlchemy()

# 使用工厂函数创建 app 实例
def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    from .main import main as main_blueprint
    app.register_blueprint(main_blueprint)
    bootstrap.init_app(app)
    moment.init_app(app)
    db.init_app(app)

    return app

下面是flasky.py里的代码

import os
from app import create_app,db
from app.models import Role,User
from flask_migrate import Migrate

app = create_app('default')
migrate = Migrate(app,db)


@app.shell_context_processor
def make_shell_context():
    return dict(db=db,User=User,Role=Role)


if __name__ == '__main__':
    app.run()

目前这个程序使用pycharm自带的运行按键是可以正常运行的,只是在终端输入flask run和flask shell时报本文开头提到的错误。
请各位帮忙看看是什么问题

展开全部

  • 写回答

2条回答 默认 最新

  • 爱音斯坦牛 全栈领域优质创作者 2022-10-26 11:12
    关注

    用 python flasky.py运行试试,因为你的默认名不是app.py,所以用这个指令,你先要设置环境变量。让其指向这个flasky.py。设置环境变量的指令为set FLASK_APP = flasky
    但是这里建议不用flask run指令,因为你要手动windows环境下创建环境变量,有时候windows下用指令设置环境变量不起作用。请看下面flask run的解释。
    有帮助的话采纳一下哦!我的主页flask专栏已经写了22篇,对你的这些问题都有总结,对项目搭建有一定的理解,有问题可以继续交流,另外,你如果有知道这个flask-script扩展包的话,可以用它实现项目运行,总之flask的运行方式很多,我不建议flask run。
    解释:
    我们可以直接flask run运行程序是因为Flask会根据以下规则自动探测程序实例:
    从当前目录中寻找app.py和wsgi.py模块,并从中寻找名为app或application的程序实例
    从环境变量FLASK_APP对应的值寻找名为app或application的程序实例

    因为我们的程序主模块是app.py,所以这里我们执行flask run命令会自动从当前目录中寻找程序实例。如果我们的程序主模块是其他名称,比如说是hello.py,

    那么需要设置环境变量FLASK_APP,将包含程序实例的模块名赋值给这个变量。
    windows中使用 set FLASK_APP=hello 命令,如果这个命令设置不了环境变量的话,需要手动设置。你这里就是set FLASK_APP = flasky
    linux和mac中使用 export FLASK_APP=hello 命令

    评论 编辑记录
  • Ko-walski 2022-10-26 11:16
    关注

    执行 export FLASK_APP=flasky

    在执行 flask run

    评论
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月26日
  • 赞助了问题酬金15元 10月26日
  • 修改了问题 10月26日
  • 创建了问题 10月26日

悬赏问题

  • ¥15 swich语句的case3 为什么不执行
  • ¥15 想问下这个电路为什么输出频率是101HZ?
  • ¥15 为什么pycharm修改不了颜色
  • ¥30 stc8h1k08这款芯片的adc检测电压测温如何使用?
  • ¥15 pywinauto数据获取
  • ¥100 backtrader参数优化时程序假死
  • ¥15 这个软件有没有认识的
  • ¥15 ESP32使用python订阅和发布消息
  • ¥15 [vasp]一般吸附系统中扩散系数公式中尝试频率的计算方法和直接计算系统谐波振动频率的计算过程
  • ¥99 Unity AVProVideo播放8K360全景视频模糊
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部