因为写错一个单词导致报错Error: Failed to find Flask application or factory in module 'flaskr'. Use 'flaskr:name' to specify one.
一、问题描述
1、创建了一个flask应用工厂函数,代码如下:
import os from flask import Flask def create_app(test_config=None): # 创建和配置应用程序 app = Flask(__name__,instance_relative_config=True) # 使用from_mapping来更新默认配置 app.config.from_mapping( SECRET_KEY = 'dev', DATABASE = os.path.join(app.instance_path,'flaskr.sqlite') ) if test_config is None: # 如果配置为None,则使用config.py中的值来重载缺省配置 app.config.from_pyfile('config.py',silent=True) else: # 设置应用默认配置 app.config.from_mapping(test_config) try: # 确保实例文件夹存在 os.makedirs(app.instance_path) except OSError: pass # 创建一个简单的页面 @app.route('/hello') def hello(): return 'Hello ,World!' return app
2、使用flask命令运行应用,命令如下:
%export FLASK_APP=flaskr %export FLASK_ENV=development %flask run
3、运行后报错如下:
![](https://img2022.cnblogs.com/blog/1189062/202209/1189062-20220915113352029-1729792346.png)
二、问题解决
1、起初猜想是不是flaskr这个包里面python文件太多了,因为除了__init__.py文件之外还有其他自己写的.py文件,于是把除了__init__.py的文件全都移走了,再次执行上面的命令还是一样的报错。
2、在网上百度该报错,有些博主写的原因是没return app,但是我的代码是有返回的,所以也不是这个原因。
3、猜想是不是工厂函数名写错导致没有调用到这个函数,仔细看了下函数名,确实写错了,create_app写成了creat_app,修改之后问题解决,成功执行,如下图:
![](https://img2022.cnblogs.com/blog/1189062/202209/1189062-20220915113931647-1465421438.png)