使用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)
上图是我的目录结构
下面是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时报本文开头提到的错误。
请各位帮忙看看是什么问题