繁体   English   中英

启动 Flask 应用程序时出错,出现错误“无法找到 Flask 应用程序”

[英]Error launching Flask app with error "Failed to find Flask application"

我是Flask的新手。 要启动 flask 应用程序,我执行了python -m flask run但我反复收到错误:

在模块“app”中找不到 Flask 应用程序或工厂。 使用“FLASK_APP=app:name 指定一个。

我在 Windows 10 机器上使用virtualenv

from flask import Flask

app = Flask(__name__)

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

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

我希望 web 服务器能够启动并能够导航到本地主机http://127.0.0.1:5000/在那里我可以查看Hello, World! 在我的浏览器上,但这从未发生过。

而不是“烧瓶”使用FLASK_APP=theflaskapp.py ,就像 Marco 建议的那样:

 env FLASK_APP=theflaskapp.py python -m flask run

这应该可以修复它,如果没有,请确保您正在执行命令以在与其相同的目录中运行脚本。 您还应该通过运行“python theflaskapp.py”(仍在与烧瓶应用程序相同的目录中)检查问题是否在烧瓶中,并查看它是否有效。

重现问题并修复它

你好,我已经重现了这个问题,这是错误代码:

错误:无法在模块“src.app”中找到 Flask 应用程序或工厂。 使用 "FLASK_APP=src.app:name 指定一个。

重现错误的步骤:

  1. 创建一个名为app.py的文件
  2. 在 app.py 里面放这个代码:
from flask import Flask

def create_app():
    app = Flask("abc")

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

或者让文件为空,如下所示:

# This is an empty file
# There is no flask application here
  1. 在 CLI 中运行以下命令:
export FLASK_APP=app.py
flask run
  1. 观看错误出现在屏幕上

解决方案 1:

  1. 使函数返回应用程序
  2. 清楚地创建一个名为app的变量,并使其等于函数的返回值,如下所示:
 from flask import Flask def create_app(): app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' return app app = create_app()

解决方案 2:在函数之外获取应用程序:

 from flask import Flask app = Flask("abc") @app.route('/') def hello_world(): return 'Hello, World!'

烧瓶错误的解决方案:找不到烧瓶应用程序。 您没有提供“FLASK_APP”环境变量,并且在当前目录中找不到“wsgi.py”或“app.py”模块。 在 Windows 上尝试set FLASKAPP=appname.py如果您使用 PowerShell 并且如果出现上述错误,请尝试此👇👇

$env:FLASK_APP = "filename"
$env:FLASK_ENV = "development"
Flask run

如果您在启动烧瓶应用程序时遇到问题,请尝试一下。

您需要指定要使用的文件。 尝试这个。

对于 Windows:

set FLASK_APP=app.py
python -m flask run

对于 Mac 操作系统和 Linux:

export FLASK_APP=app.py
python -m flask run

另一个工作选项是执行此命令而不是 flask run :

flask run --host=0.0.0.0

我有同样的问题,我在这里尝试了所有提到的答案,但最终无法奏效。

我遇到了同样的错误。 问题是您必须在当前项目中设置环境变量 FLASK_APP。

但是,我有最简单的方法来解决这个问题。 您可以使用python app.py而不是使用flask run命令。

“app.py”是您的应用程序入口点。

我有一个类似的问题。 从命令提示符使用python app.py似乎可以正常工作。 但是,它无法使用 VS Code Debug 启动。

诀窍是添加:

server = app.server

在调用app.run_server()部分之前

运行应用程序而不会出现任何问题的最简单方法是创建应用程序,然后运行python app.py

from flask import (
    Flask, 
    jsonify
)

# Function that create the app 
def create_app(test_config=None ):
    # create and configure the app
    app = Flask(__name__)

    # Simple route
    @app.route('/')
    def hello_world(): 
        return jsonify({
           "status": "success",
            "message": "Hello World!"
        }) 
     
    return app # do not foget to return the app

APP = create_app()

if __name__ == '__main__':
    # APP.run(host='0.0.0.0', port=5000, debug=True)
    APP.run(debug=True)

在 venv 和我的 Windows10 上,只有这种语法有效:

set FLASK_APP=name_of_file:name_of_var_app
If file is application.py and 'app = Flask(__name__)',
run:
set FLASK_APP=application:app

你应该改变文件名,我也有同样的问题。 所以,我更改了应用程序文件的名称,它对我有用。 起初我的应用程序文件名是“socket.py”,我将其更改为“app.py”。

我的问题是python文件没有执行权限:

chmod a+x app.py

类似的问题。 我在 vs 代码中运行代码。 安装 python 扩展并选择不同的 python 解释器(在我的情况下为 3.10,5 64 位)。 我的 vs 代码界面右上角有一个播放按钮。 这为我解决了这个问题。

我建议不要提供一个超级直接的“试试这个”建议,而是直接转到 flask 源代码到引发此异常的位置,然后从那里进行逆向工程。 https://github.com/pallets/flask/blob/main/src/flask/cli.py#L78-L82

您可以通过转到site-packages/flask/cli.py文件并在引发此错误的位置周围设置断点来在编辑器中打开它,然后从那里四处寻找。

在我的情况下是一个非常简单的问题,activate.bat 文件设置为 Macintosh (CR) 我更改为 Windows (CR LF),这对我有用。

说明:在 windows 操作系统中,为了使指令生效,例如 [set FLASK_ENV = development] 需要一个强回车,例如 (CR LF),这就是我可以验证的情况。 您可以尝试在控制台、cmd中运行SET指令,并检查是否反映了FLASK设置。 我知道这更多是环境配置的问题,而不是应用程序本身的问题。

在我的情况下超级简单,而且几乎是愚蠢的......我忘记了保存文件(CTRL + S),我得到了完全相同的错误。 一旦我保存了文件,它就可以直接工作了!

尝试从这行代码中删除空格,当我遇到此错误时,这是​​为我解决的问题:

app=Flask(__name__)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM