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

部署Streamlit应用至GitHub服务器时Bokeh get_svgs()报错求助

解决Bokeh get_svgs()在Streamlit部署环境中的错误

错误原因

Bokeh的get_svgs()方法需要依赖无头浏览器(如Chromium、Firefox)及其对应驱动来渲染图表并提取SVG内容。你的部署环境(GitHub关联的Streamlit运行环境)中没有预装这些工具,导致无法初始化浏览器驱动。

解决方案

1. 添加系统依赖包

在项目根目录创建packages.txt文件,写入以下内容(适配Ubuntu-based的Streamlit运行环境):

chromium-browser
chromium-chromedriver

该文件会告知部署环境安装系统级的Chromium浏览器及对应ChromeDriver。

2. 配置Bokeh使用Chrome驱动

在代码中显式指定Bokeh使用Chrome浏览器,确保驱动能被正确识别:

from bokeh.plotting import figure
from bokeh.io.export import get_svgs
from bokeh.io.webdriver import set_webdriver

# 强制指定使用Chrome驱动
set_webdriver("chrome")

fig = figure(title=f'{file.name}', x_axis_label='Time(s)', y_axis_label='Amplitude', width=800, height=400, y_range=(-40, 40))
# 注意:需先向fig添加数据(如fig.line(x, y)),否则生成的SVG为空
fig_data = get_svgs(fig)
fig_data = fig_data[0]
fig_data = fig_data.encode('utf-8')

3. 确认Python依赖正确

在requirements.txt中包含所需包的版本:

streamlit>=1.28.0
bokeh>=3.2.0

验证

将修改后的代码、packages.txt和requirements.txt推送到GitHub仓库,重新部署Streamlit应用,即可正常调用get_svgs()获取SVG内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:10:11