我有一个笔记本,我想在其中使用plot显示一些交互式图形,然后使用JupyterDash在笔记本中构造一个仪表板。下面的代码在我的机器上运行良好:
import numpy as np
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
df = pd.DataFrame({'category':['a','b','c'],
'value':[1,2,3]})
px.bar(df, x='category', y='value')
import dash
from jupyter_dash import JupyterDash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = JupyterDash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div(
[
html.H1("Test dashboard")
]
)
if __name__ == '__main__':
app.run_server(mode='inline', debug=True, port=8060)
但是,当我将这段代码分成两个单元格时,如下所示:
细胞1
import numpy as np
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
df = pd.DataFrame({'category':['a','b','c'],
'value':[1,2,3]})
px.bar(df, x='category', y='value')
细胞2
import dash
from jupyter_dash import JupyterDash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = JupyterDash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div(
[
html.H1("Test dashboard")
]
)
if __name__ == '__main__':
app.run_server(mode='inline', debug=True, port=8060)
然后我收到以下错误:
AttributeError: module 'google.colab.output' has no attribute 'serve_kernel_port_as_iframe'
这两种情况的唯一不同之处在于,在第二种情况下,代码被分成两个单元格。但是,在场景2中,如果我注释掉第一个单元格中对px.bar
的调用,仪表板将正常显示。
我试过了:
- 多个不同的端口号
- 将各种软件包更新到最新版本,包括plotly, dash, JupyterDash和google.colab
非常感谢您提供的任何见解
通过将JupyterDash
降级到早于在Google Colab上运行的功能的版本来解决,这导致了问题:
pip install jupyter-dash==0.2.1