不能在IPython中内联Bokeh

时间:2015-03-04 12:27:19

标签: python-2.7 ipython bokeh

我安装了最新的Bokeh和IPython,并尝试运行以下代码: (所有这些导入后来都在代码中相关)

import pandas as pd
import datetime
import matplotlib.pyplot as plt
import itertools as itt
import bokeh.plotting as bk
bk.output_notebook()

xs = [0,1,2,3,4,5]
ys = [x**2 for x in xs]

p.line(xs, ys, line_width=2)
p.circle(xs,ys)
bk.show(p)

运行这两个单元后,我得到:

  

添加输出的Javascript错误! ReferenceError:未定义Bokeh   有关更多详细信息,请参阅浏览器Javascript控制台。

所以,我运行控制台并看到:

ReferenceError: Bokeh is not defined Stack trace: @http://localhost:8888/static/components/jquery/jquery.min.js?v=20150304125302 line 4 > eval:1:1 .globalEval@http://localhost:8888/static/components/jquery/jquery.min.js?v=20150304125302:4:4231 .domManip@http://localhost:8888/static/components/jquery/jquery.min.js?v=20150304125302:5:21389 .append@http://localhost:8888/static/components/jquery/jquery.min.js?v=20150304125302:5:18980 OutputArea.prototype._safe_append@http://localhost:8888/static/notebook/js/outputarea.js?v=20150304125302:414:13 OutputArea.prototype.append_display_data@http://localhost:8888/static/notebook/js/outputarea.js?v=20150304125302:534:13 OutputArea.prototype.append_output@http://localhost:8888/static/notebook/js/outputarea.js?v=20150304125302:320:13 OutputArea.prototype.handle_output@http://localhost:8888/static/notebook/js/outputarea.js?v=20150304125302:234:9 CodeCell.prototype.get_callbacks/<.iopub.output@http://localhost:8888/static/notebook/js/codecell.js?v=20150304125302:456:21 Kernel.prototype._handle_output_message@http://localhost:8888/static/services/kernels/kernel.js?v=20150304125302:997:13 .proxy/i@http://localhost:8888/static/components/jquery/jquery.min.js?v=20150304125302:4:5486 Kernel.prototype._handle_iopub_message@http://localhost:8888/static/services/kernels/kernel.js?v=20150304125302:1024:13 Kernel.prototype._finish_ws_message@http://localhost:8888/static/services/kernels/kernel.js?v=20150304125302:866:17 .proxy/i@http://localhost:8888/static/components/jquery/jquery.min.js?v=20150304125302:4:5486 deserialize@http://localhost:8888/static/services/kernels/serialize.js?v=20150304125302:60:13 Kernel.prototype._handle_ws_message@http://localhost:8888/static/services/kernels/kernel.js?v=20150304125302:857:9 .proxy/i@http://localhost:8888/static/components/jquery/jquery.min.js?v=20150304125302:4:5486 outputarea.js:416

在看到这个之前,bk.show(p)显示了一个扭曲的情节,说&#34; Hello Word&#34;,但所有的按钮都变形了。 matplotlib工作正常。

3 个答案:

答案 0 :(得分:2)

https://github.com/bokeh/bokeh/issues/2024解决了这个问题,它将加载BokehJS的代码移动到output_notebook,而不是在导入bokeh时尝试执行此操作。但是,我仍然建议将bk.output_notebook放在自己的ipython单元格中。我将更新文档以尽快反映此建议。问题是Bokeh使用IPython&#34;发布&#34;加载自身的机制,如果你把其他东西放在一个也有输出的单元格中,它就会干扰它。就像IPython笔记本的工作方式一样,除了建议单独放置output_notebook之外别无他法,所以输出保证是正确的。

答案 1 :(得分:0)

所以,我重新启动了几次系统,并启动了一个新笔记本,突然一切正常。我猜这个问题与其中一个进口有关,但我并不是100%肯定。现在一切都很完美。

答案 2 :(得分:0)

这里的问题是在Javascript中加载IPython.core.display函数,省略它并重新运行代码。