【SD WebUI踩坑】启动报错 Expecting value: line 1 column 1 (char 0) 的终极解决方案
【故障解析】Stable Diffusion WebUI 更换主题后启动报 JSONDecodeError?可能是"主题加载"惹的祸
一、 现象描述:启动即崩溃
在为 WebUI 更换了一款精致的 Gradio 第三方主题后,再次启动程序时,控制台突然刷出一连串红色的 Traceback 报错,其中关键的信息是:
报错堆栈:
changing gradio theme: JSONDecodeError
Traceback (most recent call last):
File "G:\PythonProjects2\stable-diffusion-webui\.venv\Lib\site-packages\requests\models.py", line 976, in json
return complexjson.loads(self.text, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\A\envs\py311\Lib\json\init.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\A\envs\py311\Lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\A\envs\py311\Lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "G:\PythonProjects2\stable-diffusion-webui\modules\shared_gradio_themes.py", line 63, in reload_gradio_theme
shared.gradio_theme = gr.themes.ThemeClass.from_hub(theme_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "G:\PythonProjects2\stable-diffusion-webui\.venv\Lib\site-packages\gradio\themes\base.py", line 165, in from_hub
space_info = api.space_info(name)
^^^^^^^^^^^^^^^^^^^^
File "G:\PythonProjects2\stable-diffusion-webui\.venv\Lib\site-packages\huggingface_hub\utils\_validators.py", line 114, in _inner_fn
return fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "G:\PythonProjects2\stable-diffusion-webui\.venv\Lib\site-packages\huggingface_hub\hf_api.py", line 2785, in space_info
data = r.json()
^^^^^^^^
File "G:\PythonProjects2\stable-diffusion-webui\.venv\Lib\site-packages\requests\models.py", line 980, in json
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
关键报错:
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
此时,WebUI 界面可以正常打开,但在启动日志中又看到这个报错总感觉不舒服,之前本已经全面处理过,没成想更换主题后却又再次出现了。
【SD WebUI踩坑】启动报错 Expecting value: line 1 column 1 (char 0) 的终极解决方案
二、 深度溯源:环境冲突引发的"空响应"
通过观察报错堆栈,我们可以看到问题的源头指向了 modules\shared_gradio_themes.py 中的 from_hub 函数:
shared.gradio_theme = gr.themes.ThemeClass.from_hub(theme_name)
技术逻辑分析:
-
云端依赖:当你选择了非默认的主题时,WebUI 在启动阶段会尝试访问远程仓库(如 Hugging Face Hub)来校验或获取主题配置。
-
网络握手失败 :由于众所周知的跨境网络波动 或本地特殊网络环境拦截,API 请求并未能如愿返回 JSON 格式的配置信息。
-
解析异常 :后端可能返回了一个 HTML 报错页面或直接是空响应。当 Python 的
requests库尝试将其作为 JSON 解析时,因为第 1 行第 1 个字符不是预期的{,便抛出了JSONDecodeError。
这本质上是一个由于外部资源无法访问导致的配置加载崩溃。
三、 解决方案:强制回归本地模式
由于此时 UI 已经无法进入,我们需要通过修改底层配置文件来实施"断臂求生"。
1. 修改 config.json(核心操作)
进入你的 Stable Diffusion 安装根目录,找到 config.json 文件:
-
搜索关键字:
"gradio_theme"。 -
将其值修改为默认值:
"Default"。"gradio_theme": "Default", -
保存并重启 WebUI,此时程序将跳过云端请求,直接加载本地默认样式,报错消失。

2. 环境治理:配置 NO_PROXY 屏蔽干扰
为了避免后续其他插件再次因为网络环境不稳定 而误撞墙,建议在 webui-user.bat 中加入环境治理指令,确保本地链路的纯净:
【SD WebUI踩坑】启动报错 Expecting value: line 1 column 1 (char 0) 的终极解决方案
:: 在 COMMANDLINE_ARGS 之前添加,确保本地请求不经过外部链路中转
set NO_PROXY=127.0.0.1,localhost,huggingface.co,github.com

四、 结语与思考
这次排查再次提醒我们,在构建复杂的 AI 环境(如我正在推行的 EPGF 架构 )时,外部依赖的解耦至关重要。
当本地工具尝试频繁与云端通信时,一旦网络通道出现非预期拦截,往往会引发看似莫名其妙的程序崩溃。保持核心配置的本地化,或在启动脚本中做好完善的环境隔离,才是长治久安之道。
博主简介:
深耕 AI 领域与环境治理体系,主打 EPGF(路径治理驱动的多版本 Python 架构)。擅长从底层源码角度解决 Windows 环境下各种"疑难杂症",欢迎关注,一起拆解 AI 技术的黑盒。
【EPGF 白皮书】路径治理驱动的多版本 Python 架构------ Windows 环境治理与 AI 教学开发体系
一次搭好、终身不乱Windows Python 环境治理(EPGF)系列总览 / 阅读路线图 [目录]