部署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
相关产品推荐
相关产品推荐

