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

Python Flask REST API循环导入问题求助:ImportError报错排查

Flask循环导入错误的解决方法

你碰到的ImportError是循环导入导致的——你的代码结构里存在模块互相依赖的死循环:

  • server/server.py在创建app实例之前就导入了controllers.calendar
  • 而controllers/calendar.py又试图从server.server导入还没创建完成的app
    Python加载模块时,后导入的模块会发现前一个模块还没完全初始化,于是抛出这个错误。

修复方案1:调整导入顺序(快速解决)

修改server/server.py的代码,先创建Flask实例,再导入控制器:

from flask import Flask

# 先完成app实例的创建
app = Flask(__name__)

# 此时app已经存在,再导入控制器模块
from controllers.calendar import *

修复方案2:使用蓝图Blueprint(规范REST API结构)

如果后续要扩展更多接口,用蓝图是更专业的做法,能从根源避免循环导入:

  1. 修改controllers/calendar.py,用蓝图定义路由:
from flask import Blueprint

# 创建蓝图对象
calendar_bp = Blueprint('calendar', __name__)

# 用蓝图定义路由,不再直接依赖app
@calendar_bp.route('/calendar', methods=['GET'])
def get_calendar():
    return {"status": "success", "data": "Calendar content"}
  1. 修改server/server.py,注册蓝图:
from flask import Flask
from controllers.calendar import calendar_bp

app = Flask(__name__)
# 注册蓝图到app
app.register_blueprint(calendar_bp)

确认main.py的结构

保持main.py的导入和运行逻辑正确即可:

from server.server import app
from Config.config import host, port, debug

if __name__ == '__main__':
    app.run(host=host, port=port, debug=debug)

内容的提问来源于stack exchange,提问作者Manish Parab

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:43:11