Emulsion框架运行报错求助:无法导入bokeh.layouts的widgetbox
解决Emulsion框架运行时Bokeh
widgetbox导入错误 问题根源
你遇到的ImportError是因为Bokeh版本与Emulsion框架不兼容:Bokeh在2.0及以后的版本中,已经将widgetbox从bokeh.layouts模块移除,但Emulsion的plot.py文件仍在尝试导入这个已被废弃的API。
解决方案
方案1:降级Bokeh到兼容版本
这是最直接的解决方法,安装Emulsion支持的旧版Bokeh即可:
- 卸载当前的Bokeh版本:
pip uninstall -y bokeh - 安装保留
widgetbox的Bokeh版本(推荐1.4.0,经测试兼容):pip install bokeh==1.4.0 - 验证安装成功:
输出的pip show bokehVersion字段应为1.4.0。
方案2:手动修改Emulsion代码(无需降级)
如果不想降低Bokeh版本,可以修改Emulsion的源码适配新版Bokeh:
- 找到报错的文件:
c:\users\dell\appdata\local\programs\python\python39\lib\site-packages\emulsion\tools\plot.py - 打开文件,定位到第70行,将导入语句修改为:
from bokeh.layouts import gridplot, column from bokeh.models.widgets import WidgetBox as widgetbox - 保存文件后重新运行测试模拟即可。
额外提示:新版Bokeh中
column()函数已经可以完全替代widgetbox()的功能,你也可以直接把代码中所有调用widgetbox()的地方替换成column(),效果一致。
内容的提问来源于stack exchange,提问作者Ivan Joshua Castor
相关产品推荐
相关产品推荐

