Bokeh:模型只能由单个文档拥有 [英] Bokeh: Models must be owned by only a single document

查看:8
本文介绍了Bokeh:模型只能由单个文档拥有的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是Jupyter笔记本中的Bokeh0.12.2,它经常抛出"模型只能由一个文档拥有"的异常:

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-23-f50ac7abda5e> in <module>()
      2     ea.legend.label_text_font_size = '10pt'
      3 
----> 4 show(column([co2, co, nox, o3]))

C:UserspokeeffeAppDataLocalContinuumAnaconda3libsite-packagesokehio.py in show(obj, browser, new, notebook_handle)
    308     '''
    309     if obj not in _state.document.roots:
--> 310         _state.document.add_root(obj)
    311     return _show_with_state(obj, _state, browser, new, notebook_handle=notebook_handle)
    312 

C:UserspokeeffeAppDataLocalContinuumAnaconda3libsite-packagesokehdocument.py in add_root(self, model)
    443             self._roots.append(model)
    444         finally:
--> 445             self._pop_all_models_freeze()
    446         self._trigger_on_change(RootAddedEvent(self, model))
    447 

C:UserspokeeffeAppDataLocalContinuumAnaconda3libsite-packagesokehdocument.py in _pop_all_models_freeze(self)
    343         self._all_models_freeze_count -= 1
    344         if self._all_models_freeze_count == 0:
--> 345             self._recompute_all_models()
    346 
    347     def _invalidate_all_models(self):

C:UserspokeeffeAppDataLocalContinuumAnaconda3libsite-packagesokehdocument.py in _recompute_all_models(self)
    367             d._detach_document()
    368         for a in to_attach:
--> 369             a._attach_document(self)
    370         self._all_models = recomputed
    371         self._all_models_by_name = recomputed_by_name

C:UserspokeeffeAppDataLocalContinuumAnaconda3libsite-packagesokehmodel.py in _attach_document(self, doc)
     89         '''This should only be called by the Document implementation to set the document field'''
     90         if self._document is not None and self._document is not doc:
---> 91             raise RuntimeError("Models must be owned by only a single document, %r is already in a doc" % (self))
     92         doc.theme.apply_to_model(self)
     93         self._document = doc

RuntimeError: Models must be owned by only a single document, <bokeh.models.tickers.DaysTicker object at 0x00000000042540B8> is already in a doc

触发器始终调用show(...)(尽管从未在内核启动后第一次调用,只调用后续调用)。

根据文档,我认为reset_output()会将我的笔记本恢复到可操作状态,但异常仍然存在。通过反复试验,我确定也有必要重新定义传递给show()的所有内容。这使得交互工作既麻烦又容易出错。

[Ref]:

reset_output(state=None)

&emsp;&emsp;清除所有输出模式的默认状态。

&emsp;&emsp;返回:


  • 我对reset_output()的理解是否正确--是否应该解决导致此异常的情况?

  • 否则,如何避免此类异常?

推荐答案

可能是因为具有相同名称的冲突对象。每次都需要创建全新的对象。

这篇关于Bokeh:模型只能由单个文档拥有的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆