如何在Azure ML笔记本中使用Bokeh

时间:2016-08-28 10:39:25

标签: python azure jupyter-notebook bokeh azure-machine-learning-studio

我可以使用Anaconda在我的电脑上的Jupyter笔记本(Python 3.5)中运行以下代码,它运行正常。但是,当我在Azure ML笔记本中运行相同的代码时,我得到了图,但也出现了下面描述的错误消息。有谁知道如何在Azure ML笔记本中使用Bokeh?是否有一种方法可以导入看似缺失的模块'ipykernel'

from bokeh.plotting import figure, show, output_notebook
from bokeh.sampledata.iris import flowers

colormap = {'setosa': 'red', 'versicolor': 'green', 'virginica': 'blue'}
colors = [colormap[x] for x in flowers['species']]

p = figure(title = "Iris Morphology")
p.xaxis.axis_label = 'Petal Length'
p.yaxis.axis_label = 'Petal Width'

p.circle(flowers["petal_length"], flowers["petal_width"],
     color=colors, fill_alpha=0.2, size=10)

output_notebook()
show(p)

生成图,但也出现以下错误

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-17-c50d1a94007e> in <module>()
 13 
 14 output_notebook()
---> 15 show(p)

/home/nbuser/env3/lib/python3.4/site-packages/bokeh/io.py in show(obj,        browser, new)
    299 
    300     '''
--> 301     return _show_with_state(obj, _state, browser, new)
    302 
    303 def _show_with_state(obj, state, browser, new):

/home/nbuser/env3/lib/python3.4/site-packages/bokeh/io.py in     _show_with_state(obj, state, browser, new)
    307 
    308     if state.notebook:
--> 309         comms_handle = _show_notebook_with_state(obj, state)
    310 
    311     elif state.server_enabled:

/home/nbuser/env3/lib/python3.4/site-packages/bokeh/io.py in     _show_notebook_with_state(obj, state)
    329         comms_target = make_id()
    330         publish_display_data({'text/html': notebook_div(obj,   comms_target)})
--> 331         handle = _CommsHandle(get_comms(comms_target), state.document,     state.document.to_json())
    332         state.last_comms_handle = handle
    333         return handle

/home/nbuser/env3/lib/python3.4/site-packages/bokeh/util/notebook.py in   get_comms(target_name)
    109 
    110     '''
--> 111     from ipykernel.comm import Comm 
    112     return Comm(target_name=target_name, data={})
    113 

ImportError: No module named 'ipykernel'

In [16]:

2 个答案:

答案 0 :(得分:2)

我认为有两种选择。在笔记本中,我认为您可以使用conda在AzureML环境中安装新软件包,方法是执行包含以下内容的单元格:

!conda install ipykernel --yes

注意开头的!。在Jupyter笔记本中,这意味着将命令作为shell命令执行。

另外,在即将发布的0.12.2本周晚些时候发布的(今天的日期:2016-08-28)使用ipykernel导入的“笔记本电脑通讯”功能将不再一直“打开”,只会在明确要求时使用。这也应解决这个问题。

0.12.2发布之前,您可以通过安装“dev build”或候选版本来使用这些新功能。主要文档网站有installing developer builds的简单说明。 (您可以在笔记本中使用!conda进行类似的安装,如上所述。)

答案 1 :(得分:1)

@MortenBunesGustavsen,据我所知,Azure ML笔记本有两个不同版本的python,python3.4主机上有env3python3.5主机上有anaconda3_410 。您可以直接访问网址http://notebooks.azure.com以使用Bokehpython3.5环境中使用ipykernel而不会出现任何错误,而无法从Azure访问jupyter(不带ipykernel的python3.4) ML工作室。

请先通过以下代码检查运行时版本。

In [1]: import sys
In [2]: sys.version
Out[2]: '3.5.1 |Anaconda custom (64-bit)| (default, Jun 15 2016, 15:32:45) \n[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]'

希望它有所帮助。