Bokeh升级至2.0.2后无法渲染,卡在Loading BokehJS状态
嘿,我来帮你搞定这个升级Bokeh后遇到的加载问题!从你描述的情况和环境信息来看,核心问题是升级后BokehJS一直卡在“Loading BokehJS ...”状态,导致绘图无法显示。咱们一步步来排查解决:
问题根源分析
你从旧版Bokeh(0.12)直接跨版本升级到2.0.2,版本跨度很大,大概率是旧版本的BokehJS缓存与新版本资源冲突,或者Jupyter与新版Bokeh的资源加载机制不兼容。另外你环境里没装Node.js,但Bokeh 2.0.2在Jupyter中运行其实不需要Node.js,所以这个不是核心问题。
具体解决方案
1. 先清理缓存并重启内核
这是最容易操作且有效的第一步:
- 在Jupyter中点击顶部菜单的 Kernel -> Restart & Clear Output,彻底重置当前内核并清除所有输出;
- 打开浏览器设置,清空缓存的图像和文件(快捷键Ctrl+Shift+Del),确保旧版BokehJS的缓存被完全清除;
- 重新运行你的导入代码和绘图代码,看看是否能正常加载。
2. 强制使用本地BokehJS资源
你之前试过INLINE但没效果,试试明确指定本地静态资源路径(就是你bokeh info里的BokehJS static path),避免依赖CDN加载:
修改你的资源导入和输出代码为:
from bokeh.resources import Resources # 替换成你自己的BokehJS静态路径 local_res = Resources(mode='inline', root_url='file:///c:/users/cuspi/anaconda3/lib/site-packages/bokeh/server/static/') output_notebook(resources=local_res, hide_banner=True)
然后重新运行所有代码,这样会直接从本地加载BokehJS资源,避免CDN的网络问题。
3. 安装并启用Jupyter-Bokeh扩展
新版Bokeh对Jupyter的交互支持依赖专门的扩展,你可以试试安装它:
在Jupyter的终端中运行:
# 用conda安装(推荐,避免版本冲突) conda install -c bokeh jupyter_bokeh # 或者用pip pip install jupyter_bokeh
安装完成后启用扩展:
jupyter nbextension enable --py jupyter_bokeh
重启Jupyter后再测试绘图。
4. 降级到兼容的Bokeh版本(备选方案)
如果上面的方法都无效,可能是Python 3.7.3和Bokeh 2.0.2之间存在兼容性问题。你可以尝试降级到Bokeh 1.4.0,这个版本对Python 3.7的支持更稳定:
pip install bokeh==1.4.0 --force-reinstall
降级完成后重启Jupyter,再运行你的代码试试。
测试验证
不管用哪种方法,最后都可以用这段极简代码测试:
from bokeh.plotting import figure, show from bokeh.io import output_notebook output_notebook() p = figure() p.line(x=[1,2,3], y=[4,5,6]) show(p)
如果这段代码能正常显示图形,就说明问题解决啦!
内容的提问来源于stack exchange,提问作者Leopoldo Cuspinera

