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

基于JupyterHub的Voila/nbconvert无法显示ipywidgets问题求助

问题:Voila与nbconvert无法显示ipywidgets内容

环境背景

  • 运行基于Kubernetes的Zero to JupyterHub环境
  • 团队多数为非编程人员,需通过Voila将Notebook转为可交互Web应用
  • Voila已完成服务器部署,通过jupyter-server-proxy反向代理运行正常

问题现象

  • Notebook中的Markdown、HTML元素、普通输出及Seaborn图表均可正常展示
  • ipywidgets组件无法显示,仅呈现空输出区域
  • 单独执行jupyter nbconvert --to html命令转换Notebook时,出现完全相同的ipywidgets不显示问题

当前环境核心依赖版本

ipywidgets 8.0.2
voila 0.4.0
nbconvert 6.4.5
jupyterlab-widgets 3.0.3
widgetsnbextension 4.0.3

完整环境依赖列表:

absl-py 1.3.0
aiohttp 3.8.3
aiosignal 1.3.1
alembic 1.8.1
altair 4.2.0
anyio 3.6.2
appmode 0.8.0
argon2-cffi 21.3.0
argon2-cffi-bindings 21.2.0
asn1crypto 1.5.1
asttokens 2.1.0
astunparse 1.6.3
async-generator 1.10
async-timeout 4.0.2
attrs 22.1.0
Babel 2.11.0
backcall 0.2.0
backports.functools-lru-cache 1.6.4
beautifulsoup4 4.11.1
bleach 5.0.1
blinker 1.5
bokeh 3.0.1
boto3 1.26.5
botocore 1.29.6
Bottleneck 1.3.5
branca 0.6.0
brotlipy 0.7.0
cached-property 1.5.2
cachetools 5.2.0
certifi 2022.9.24
certipy 0.1.3
cffi 1.15.1
charset-normalizer 2.1.1
click 8.1.3
cloudpickle 2.2.0
colorama 0.4.6
conda 22.9.0
conda-package-handling 1.9.0
contourpy 1.0.6
cryptography 38.0.3
cycler 0.11.0
Cython 0.29.32
cytoolz 0.12.0
dask 2022.10.0
debugpy 1.6.3
decorator 5.1.1
defusedxml 0.7.1
dill 0.3.6
distributed 2022.10.0
ecdsa 0.18.0
enbw-aop-client 0.20221027.1
entrypoints 0.4
entsoe-py 0.5.8
envs 1.4
et-xmlfile 1.0.1
executing 1.2.0
fastjsonschema 2.16.2
filelock 3.8.0
Flask 2.2.2
flatbuffers 2.0
flit_core 3.8.0
fonttools 4.38.0
frozenlist 1.3.3
fsspec 2022.10.0
gast 0.4.0
geographiclib 1.52
geopy 2.2.0
gitdb 4.0.9
GitPython 3.1.29
gmpy2 2.1.2
google-auth 2.14.0
google-auth-oauthlib 0.4.6
google-pasta 0.2.0
gravis 0.1.0
greenlet 2.0.1
grpcio 1.47.1
h11 0.14.0
h5py 3.7.0
HeapDict 1.0.1
idna 3.4
imagecodecs 2022.9.26
imageio 2.22.0
importlib-metadata 5.0.0
importlib-resources 5.10.0
ipykernel 6.17.1
ipyleaflet 0.17.2
ipympl 0.9.2
ipython 8.6.0
ipython-genutils 0.2.0
ipywidgets 8.0.2
itsdangerous 2.1.2
jedi 0.18.1
Jinja2 3.1.2
jmespath 1.0.1
joblib 1.2.0
json5 0.9.10
jsonschema 4.17.0
jupyter_client 7.4.1
jupyter_core 5.0.0
jupyter-server 1.23.1
jupyter-server-mathjax 0.2.6
jupyter-server-proxy 3.2.2
jupyter-telemetry 0.1.0
jupyterhub 3.0.0
jupyterlab 3.5.0
jupyterlab-git 0.39.3
jupyterlab-pygments 0.2.2
jupyterlab_server 2.16.2
jupyterlab-widgets 3.0.3
keras 2.10.0
Keras-Preprocessing 1.1.2
kiwisolver 1.4.4
libmambapy 1.0.0
llvmlite 0.39.1
locket 1.0.0
lxml 4.9.1
lz4 4.0.2
Mako 1.2.3
mamba 1.0.0
Markdown 3.4.1
MarkupSafe 2.1.1
matplotlib 3.6.2
matplotlib-inline 0.1.6
mistune 2.0.4
mpmath 1.2.1
msgpack 1.0.4
multidict 6.0.2
munkres 1.1.4
nbclassic 0.4.8
nbclient 0.7.0
nbconvert 6.4.5
nbdime 3.1.1
nbformat 5.7.0
nbtools 21.12
nest-asyncio 1.5.6
networkx 2.8.8
neurolab 0.3.5
notebook 6.5.2
notebook_shim 0.2.2
ntlm-auth 1.5.0
numba 0.56.3
numexpr 2.8.3
numpy 1.23.4
oauthlib 3.2.2
openpyxl 3.0.10
opt-einsum 3.3.0
oscrypto 1.2.1
outcome 1.2.0
packaging 21.3
pamela 1.0.0
pandas 1.5.1
pandocfilters 1.5.0
parso 0.8.3
partd 1.3.0
patsy 0.5.3
pexpect 4.8.0
pickleshare 0.7.5
Pillow 9.2.0
pip 22.3.1
pkgutil_resolve_name 1.3.10
platformdirs 2.5.3
plotly 5.11.0
pretty-html-table 0.9.11
prometheus-client 0.15.0
prompt-toolkit 3.0.32
protobuf 4.21.9
psutil 5.9.4
ptyprocess 0.7.0
pure-eval 0.2.2
pyarrow 9.0.0
pyasn1 0.4.8
pyasn1-modules 0.2.7
pycognito 2022.4.0
pycosat 0.6.4
pycparser 2.21
pycryptodomex 3.15.0
pycurl 7.45.1
pydantic 1.10.2
Pygments 2.13.0
PyJWT 2.6.0
pyOpenSSL 22.1.0
pyparsing 3.0.9
pyproj 3.4.0
pyrsistent 0.19.2
PySocks 1.7.1
python-dateutil 2.8.2
python-jose 3.3.0
python-json-logger 2.0.1
pytz 2022.6
pytz-deprecation-shim 0.1.0.post0
pyu2f 0.1.5
PyWavelets 1.3.0
PyYAML 6.0
pyzmq 24.0.1
requests 2.28.1
requests-ntlm 1.1.0
requests-oauthlib 1.3.1
requests-toolbelt 0.10.1
rpy2 3.5.1
rsa 4.9
ruamel.yaml 0.17.21
ruamel.yaml.clib 0.2.7
ruamel-yaml-conda 0.15.80
s3transfer 0.6.0
scikit-image 0.19.3
scikit-learn 1.1.3
scipy 1.9.3
seaborn 0.12.1
selenium 4.6.0
Send2Trash 1.8.0
setuptools 65.5.1
SharePlum 0.5.1
simpervisor 0.4
simplegeneric 0.8.1
six 1.16.0
smmap 3.0.5
sniffio 1.3.0
snowflake-connector-python 2.8.1
sortedcontainers 2.4.0
soupsieve 2.3.2.post1
SQLAlchemy 1.4.43
stack-data 0.6.0
statsmodels 0.13.5
sympy 1.11.1
tables 3.7.0
tblib 1.7.0
tenacity 8.1.0
tensorboard 2.10.1
tensorboard-data-server 0.6.0
tensorboard-plugin-wit 1.8.1
tensorflow 2.10.0
tensorflow-estimator 2.10.0
termcolor 2.1.0
terminado 0.17.0
terminaltables 3.1.10
testpath 0.6.0
threadpoolctl 3.1.0
tifffile 2022.10.10
tinycss2 1.2.1
tomli 2.0.1
toolz 0.12.0
tornado 6.2
tqdm 4.64.1
traitlets 5.5.0
traittypes 0.2.1
trash-cli 0.22.10.20
trio 0.21.0
trio-websocket 0.9.2
typing_extensions 4.4.0
tzdata 2022.6
tzlocal 4.2
unicodedata2 15.0.0
urllib3 1.26.12
usp.common.data 5.1.0
usp.common.util 0.0.1
voila 0.4.0
wcwidth 0.2.5
webencodings 0.5.1
websocket-client 1.4.2
websockets 10.4
Werkzeug 2.2.2
wheel 0.38.3
widgetsnbextension 4.0.3
wrapt 1.14.1
wsproto 1.2.0
xlrd 2.0.1
XlsxWriter 3.0.3
xyzservices 2022.9.0
yarl 1.8.1
zict 2.2.0
zipp 3.10.0

已尝试的解决措施

  • 更换不同版本的nbconvert
  • 启用Notebook的“Save Widget State Automatically”选项

解决思路建议

1. 修复版本兼容性问题

Voila 0.4.0与ipywidgets 8.x存在已知兼容性冲突,可通过以下两种方式调整:

  • 降级ipywidgets生态:将ipywidgets降至7.7.x,对应jupyterlab-widgets降至1.1.x,widgetsnbextension降至3.6.x
  • 升级Voila:将Voila升级至0.5.0及以上版本(需提前验证与现有JupyterHub环境的兼容性)

2. 强制保存Widget状态

即使开启自动保存,手动执行以下代码确保Widget状态写入Notebook:

from ipywidgets import widgets
widgets.Widget.save()

执行后保存Notebook,再重新尝试Voila或nbconvert转换。

3. 启用转换时的执行逻辑

执行nbconvert时添加--execute参数,确保Notebook被完整执行并保存Widget状态:

jupyter nbconvert --to html --execute your_notebook.ipynb

启动Voila时也可添加该参数:

voila --execute your_notebook.ipynb

4. 验证Jupyter扩展状态

检查并确保Widget相关扩展已正确安装启用:

jupyter labextension list
jupyter nbextension list

若@jupyter-widgets/jupyterlab-manager或widgetsnbextension未启用,执行以下命令安装/启用:

jupyter labextension install @jupyter-widgets/jupyterlab-manager
jupyter nbextension enable --py widgetsnbextension

5. 确认Voila Widget配置

确保Voila未禁用Widget支持,可通过启动参数指定:

voila --enable-widgets your_notebook.ipynb

或在Voila配置文件中添加:

c.VoilaConfiguration.enable_widgets = True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:30:51