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

Bokeh Server无法找到图片的问题求助

Bokeh Server 图片加载404问题解决

问题场景

在Jupyter Notebook中可正常显示图片的功能,迁移到Bokeh Server后出现404错误,无法加载图片。文件结构如下:

logo.png
server_folder/
     main.py
     logo.png
     static/
         logo.png

尝试过两种代码实现均失效:

  1. 使用Div组件:
p = Div(text="<img src=\"logo.png\">")
curdoc().add_root(p)
  1. 使用figure的image_url方法:
p = figure(x_range=(0,400), y_range=(0,400), width=400, height=400)
p.image_url(url=["logo.png"], x=0, y=400, w=400, h=400)
curdoc().add_root(p)

还试过file://logo.png、file://c:/some_path/logo.png等路径,均无效。其他元素渲染正常,仅图片加载失败。环境:Windows系统,Bokeh 2.4.3,Python 3.9.13,通过Anaconda Powershell Prompt启动服务。

解决方案

Bokeh Server对静态资源加载有明确规则,需按以下方式调整:

1. 静态文件放置规则

确保图片放在server_folder/static/目录下(你已完成此步骤),这是Bokeh Server默认的静态资源目录。

2. 修正资源路径

  • Div组件写法:
    路径必须以/static/开头,修改代码:
    p = Div(text='<img src="/static/logo.png">')
    curdoc().add_root(p)
    
  • image_url方法写法:
    同样使用/static/开头的路径,配合ColumnDataSource传递资源地址:
    from bokeh.models import ColumnDataSource
    
    p = figure(x_range=(0,400), y_range=(0,400), width=400, height=400)
    source = ColumnDataSource(data=dict(url=["/static/logo.png"]))
    p.image_url(source=source, x=0, y=400, w=400, h=400, url='url')
    curdoc().add_root(p)
    

3. 启动服务的正确姿势

启动Bokeh Server时,确保工作目录为server_folder,执行命令:

bokeh serve --show main.py

若静态文件不在默认static目录,可通过--static-path参数指定路径:

bokeh serve --show --static-path=/自定义静态资源路径 main.py

关于file://路径失效的原因

浏览器安全策略禁止Web应用从本地文件系统加载资源,因此file://开头的路径在Bokeh Server这类Web服务场景下无法生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:00:47