您的位置:

对于flask错误NoAppException(f"Detected factory {attr_name!r} in module {module.__name__!r},"" but could not call it without arguments. Use"f" \"FLASK_APP='{module.__name__}:{attr_name}(args)'\""" to specify arguments.")的解决

  发布时间:2023-02-23 20:19:17
报错的原因这个错误提示表明在运行flask应用程序时,程序无法找到应用程序工厂。这通常是由于在环境变量中未正确设置FLASK_APP变量导致的。在运行flask命令之前,应该设置告诉flask该应用程序在哪里。如何解决解决这个问题的方法有以下几种:通过设置FLASK_APP环境变量来告诉flask应用程序的位置。例如检查你的程序是否有对应的app factory,如果没有需要创建一个,并确保app factory是无参数的。

报错的原因

这个错误提示表明在运行flask应用程序时,程序无法找到应用程序工厂。这通常是由于在环境变量中未正确设置FLASK_APP变量导致的。

在运行flask命令之前,应该设置 FLASK_APP='your_app_name' 告诉flask该应用程序在哪里。

如果这个问题依旧存在,那么可能是你所设置的app name 不正确或者没有在对应的文件中设置对应的app factory,可以检查一下你的程序中是否有对应的app factory,如果没有需要创建一个。

如何解决

解决这个问题的方法有以下几种:

1. 通过设置FLASK_APP环境变量来告诉flask应用程序的位置。在命令行中运行:

export FLASK_APP=your_app_name

或者在Windows系统中,运行:

set FLASK_APP=your_app_name

2. 在运行flask命令时,明确指定应用程序的位置。例如:

flask run --app=your_app_name

3. 检查你的程序是否有对应的app factory,如果没有需要创建一个,并确保app factory是无参数的。

4. 你可以确认你的app是否在对应的文件中导入,如果没有可能是导入错误。

总之,这个错误提示表明程序无法找到应用程序工厂,要么是因为环境变量未正确设置,要么是因为应用程序工厂不存在或者不正确。

使用例子

当然可以,这是一个简单的flask应用程序的例子,文件名为app.py。


from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

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

在运行flask应用程序之前,需要设置FLASK_APP环境变量。


export FLASK_APP=app.py

或者在Windows系统中


set FLASK_APP=app.py

然后就可以运行flask应用程序了。


flask run

如果你想在你的应用程序中使用参数,那么可以这么做


from flask import Flask

def create_app(config_file):
    app = Flask(__name__)
    app.config.from_pyfile(config_file)
    return app

app = create_app("config.cfg")

@app.route('/')
def hello():
    return 'Hello, World!'

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

然后你就可以使用FLASK_APP='your_app_name:create_app(args)'来指定参数了。


export FLASK_APP='app:create_app("config.cfg")'

set FLASK_APP='app:create_app("config.cfg")'