You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask运行报错:无法识别flaskr目录下__init__.py应用工厂文件

问题描述

参考Flask官方基础教程实践时,在flaskr文件夹外部创建虚拟环境,flaskr文件夹内编写好__init__.py后虚拟环境可正常激活,但执行Flask启动命令时出现报错。
使用的启动命令如下:

set FLASK_APP=flaskr
set FLASK_ENV=development
flask run

报错信息:

Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory.

当前目录结构:

test
|-- flaskr
|   |-- __init__.py
|-- venv

补充测试情况:

  • 如果在test根目录下创建app.py文件,Flask启动命令可以正常运行,但后续教程步骤中始终无法识别__init__.py内的代码修改,判断Flask从一开始就没有正确识别flaskr文件夹。
  • 使用根目录下的app.py启动时,日志中不会出现* Serving Flask app "flaskr"、* Environment: development、* Debug mode: on的相关提示。

涉及的代码如下:
flaskr/__init__.py代码:

import os

from flask import Flask


def create_app(test_config=None):
    # create and configure the app
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='dev',
        DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
    )

    if test_config is None:
        # load the instance config, if it exists, when not testing
        app.config.from_pyfile('config.py', silent=True)
    else:
        # load the test config if passed in
        app.config.from_mapping(test_config)

    # ensure the instance folder exists
    try:
        os.makedirs(app.instance_path)
    except OSError:
        pass

    # a simple page that says hello
    @app.route('/hello')
    def hello():
        return 'Hello, World!'

    return app

根目录app.py代码:

from flask import Flask

app = Flask(__name__)


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

该问题由两类常见操作错误导致:

  1. 执行命令的工作目录错误:flask run需要在flaskr包所在的父目录(即test根目录)执行,否则Python无法导入flaskr模块,FLASK_APP=flaskr的配置也无法生效。
  2. 终端环境变量设置语法不匹配:Windows系统下set是CMD命令提示符专属的环境变量设置命令,若在PowerShell(含VS Code、Windows Terminal默认集成的PowerShell终端)中使用set命令,环境变量不会被正确赋值,Flask无法读取FLASK_APP参数,就会抛出找不到应用的报错。
    另外根目录自行创建的app.py是独立的单文件Flask应用,与flaskr包完全无关,启动该文件时不会加载flaskr内的任何代码,因此无法识别__init__.py的修改。
解决步骤
  1. 删除test根目录下多余的app.py文件,避免Flask错误加载单文件应用。
  2. 打开终端后,通过cd命令切换到test根目录(即可看到flaskr、venv两个子文件夹的目录层级)。
  3. 根据当前使用的终端类型,选择对应命令设置环境变量并启动应用:
    • 使用Windows CMD命令提示符时,执行以下命令:
      set FLASK_APP=flaskr
      set FLASK_ENV=development
      flask run
      
    • 使用PowerShell时,执行以下命令:
      $env:FLASK_APP = "flaskr"
      $env:FLASK_ENV = "development"
      flask run
      
  4. 启动成功校验:日志中出现* Serving Flask app "flaskr"提示即代表配置正确,此时访问/hello路径可看到__init__.py中定义的返回内容,开发模式下修改flaskr包内的代码会被自动重载识别。

内容的提问来源于stack exchange,提问作者Jason Li

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:24:27