You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在未连接内核的Jupyter Notebook导出HTML中显示ipywidgets?

解决ipywidgets导出HTML离线无法交互的问题

默认Jupyter Notebook导出的HTML仅保存了ipywidgets的文本表示(如HBox(children=(Dropdown(...)))),未包含前端渲染所需的JavaScript和组件状态,导致离线时无法交互。以下是两种可行的解决方案:

方案一:使用ipywidgets.embed生成可嵌入的交互组件

通过ipywidgets.embed模块将widget的状态和依赖的前端资源导出为独立的HTML片段,确保离线环境下可渲染:

  1. 在Notebook末尾添加以下代码,生成嵌入所需的代码:
from ipywidgets import embed

# 导出widget的嵌入脚本和状态到文件
embed.save_embedding(views=[controls, out], filename='dashboard_embedded.html')
# 或直接获取嵌入代码片段用于手动整合
embed_snippet = embed.embed_snippet(views=[controls, out])
print(embed_snippet)
  1. 运行代码后,生成的HTML文件包含完整交互逻辑,可直接使用或整合到原Notebook导出的HTML中。

方案二:用nbconvert直接导出可交互HTML

通过nbconvert的专用处理器,一键导出包含可交互ipywidgets的HTML:

  1. 确保已安装依赖:
pip install ipywidgets plotly nbconvert
  1. 在命令行执行导出命令:
jupyter nbconvert --to html --execute --template full --EmbedPostProcessor.enabled=True your_notebook.ipynb
  • --execute:确保Notebook被完整运行,保存widget的状态
  • --EmbedPostProcessor.enabled=True:启用ipywidgets嵌入处理器,将组件转换为前端可交互元素
  • --template full:使用完整模板,确保所有资源被包含

额外优化:确保Plotly图表离线可用

你的代码中使用了Plotly图表,默认fig.show()依赖内核,导出时可修改为直接生成HTML嵌入,确保离线可用:
修改draw_dashboard函数末尾的fig.show()为:

with out:
    # 将Plotly图表转换为HTML嵌入到Output中
    display(HTML(fig.to_html(full_html=False, include_plotlyjs='cdn')))
  • include_plotlyjs='cdn':使用CDN加载Plotly JS;若需完全离线,可改为include_plotlyjs=True将JS嵌入HTML,或include_plotlyjs='directory'并打包对应的JS文件。

内容的提问来源于stack exchange,提问作者Pouya Afraz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:29:59