ImportError: cannot import name ‘ENABLE_LOCAL_WEB_FETCH’ from partially initialized module ‘open_webui.config’ (most likely due to a circular import) (/home/ricardo/IAI/owui/open-webui/backend/

该报错通常发生在 Open WebUI 通过 Git Clone 方式全新安装或升级时,Alembic 迁移因循环导入而静默失败,导致数据库表结构不完整。优先排查是否因新版本新增的 import 链引发了 config.py 的循环导入,并尝试手动执行数据库迁移。

快速结论:该报错通常发生在 Open WebUI 通过 Git Clone 方式全新安装或升级时,Alembic 迁移因循环导入而静默失败,导致数据库表结构不完整。优先排查是否因新版本新增的 import 链引发了 config.py 的循环导入,并尝试手动执行数据库迁移。

适用环境:Open WebUI v0.11.1,操作系统 Ubuntu 26.04,Python 3.12(示例路径显示 python3.12/site-packages),通过 Git Clone 安装,使用 SQLite 数据库。Issue 中未确认 CUDA、显卡或 Ollama 版本。

最快修复方案:暂无确认的一步修复方案。Issue 讨论中提出的手动迁移方案(官方文档)在部分案例下不可行,因为迁移脚本本身也触发了相同的循环导入。可优先尝试手动迁移,但需知悉其可能在导入 Calendar 模型时再次失败。

注意事项:手动迁移方案在全新安装(无 webui.db)场景下可能无法执行;官方修复已提交,但当前版本(如 0.11.1)中问题仍存在。若手动迁移失败,建议等待官方发布修复版本或从 dev 分支构建。

问题场景

用户在 Ubuntu 26.04 上通过 Git Clone 方式安装 Open WebUI v0.11.1,执行 ./start.sh 启动脚本时,Alembic 迁移在后台静默失败。迁移失败被记录到日志,但应用仍尝试启动,导致全新安装时因缺少 config 表、或从 0.11.0 升级时因缺少 chat.timer_at 列而功能异常。

报错原文

ERROR:open_webui.env:Error running migrations: cannot import name 'ENABLE_LOCAL_WEB_FETCH' from partially initialized module 'open_webui.config' (most likely due to a circular import) (/home/ricardo/IAI/owui/open-webui/backend/open_webui/config.py)
Traceback (most recent call last):
  File "/home/ricardo/IAI/owui/open-webui/backend/open_webui/config.py", line 74, in run_migrations
    command.upgrade(alembic_cfg, 'head')
  File "/home/ricardo/.local/lib/python3.12/site-packages/alembic/command.py", line 487, in upgrade
    script.run_env()

原因分析

可能原因:迁移在导入 config.py 模块的过程中被触发(作为导入副作用),而该模块尚未完全加载。Alembic 的 env.py 会导入日历(Calendar)模型,该模型新增的 import 链会经过 utils.automationseventsretrieval.web.utils,最终反向导入 config 中定义在文件后部的设置项(如 ENABLE_LOCAL_WEB_FETCH),造成循环导入,抛出 ImportError。迁移运行器捕获该错误后仅记录日志,未停止应用,导致数据库保持旧结构。

环境排查

  • 确认 Open WebUI 版本是否为 v0.11.1(或更早版本升级而来)。
  • 确认 Python 版本(3.12 或 3.11 均可能触发)。
  • 确认数据库类型(SQLite 或 PostgreSQL)及是否已存在 webui.db 文件。
  • 检查 DATABASE_URL 环境变量是否设置正确。

解决步骤

  1. 首先尝试官方提供的手动迁移方案,参考 Open WebUI 手动数据库迁移文档,设置 DATABASE_URL 后运行 alembic upgrade head
  2. 若手动迁移触发 cannot import name 'Calendar',说明循环导入仍存在,可尝试在运行迁移前移除或注释 config.py 中触发迁移的代码块(if ENABLE_DB_MIGRATIONS: run_migrations()),将其移至 main.py 中执行(Issue 中评论者验证有效)。
  3. 检查当前分支是否为最新 dev 分支,或等待官方发布包含修复的版本(0.11.2 或更高)。
  4. 若使用 Docker,可尝试重建镜像或等待官方镜像更新。

验证方法

确认迁移成功执行:启动后日志不再显示 ERROR:open_webui.env:Error running migrations,且数据库中已存在 config 表(全新安装)或 chat.timer_at 列(从 0.11.0 升级)。可通过 sqlite3 webui.db '.tables'PRAGMA table_info(chat); 验证表结构。

参考来源

open-webui/open-webui #29280

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 21219

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注