python module_error ai_generated true

ImportError: 无法从部分初始化的模块 'app' 中导入 'db'(很可能是由于循环导入)

ImportError: cannot import name 'db' from partially initialized module 'app' (most likely due to a circular import)

ID: python/flask-circular-import

其他格式: JSON · Markdown 中文 · English
80%修复率
88%置信度
0证据数
2024-02-08首次发现

版本兼容性

版本状态引入弃用备注
3.x active — — —

根因分析

两个模块在加载时互相导入,通常是 models 导入 app 而 app 又导入 models。

English

Two modules import each other at module load time, typically models importing app and app importing models.

generic

解决方案

  1. 93% 成功率
    def create_app():
        app = Flask(__name__)
        db.init_app(app)
        return app
  2. 91% 成功率
    # extensions.py
    from flask_sqlalchemy import SQLAlchemy
    db = SQLAlchemy()

无效尝试

常见但无效的做法:

  1. 85% 失败

    Only changes which side fails first; cycle remains.

  2. 90% 失败

    Leaves db undefined and crashes later.