ipydatagrid小部件不显示在SageMaker Studio中



问题

我有一个jupyter笔记本,里面有一个显示数据帧的ipydatagrid小部件。此笔记本在本地运行时可以正常工作,但在AWS SageMaker Studio中运行时无法正常工作。当在SageMaker Studio中运行时,它不显示小部件,而是简单地显示文本Loading widget...

如何在SageMaker Studio环境中使用ipydatagrid小部件?

详细信息

Python版本:

$ python --version
Python 3.7.10

启动时运行:

$ pip install -r requirements.txt
$ jupyter nbextension enable --py --sys-prefix widgetsnbextension
$ jupyter nbextension install --py --symlink --sys-prefix ipydatagrid
$ jupyter nbextension enable --py --sys-prefix ipydatagrid

文件requirements.txt:

ipydatagrid==1.1.11
pandas==1.0.1

笔记本内容:

# %%
import pandas as pd
from ipydatagrid import DataGrid
from IPython.display import display
import ipywidgets
# %%
data = [
("potato", 1.2, True),
("sweet potato", 0.8, False),
("french fries", 4.5, True),
("waffle fries", 4.9, True)
]
df = pd.DataFrame(
data,
columns=["food", "stars", "is_available"]
)
# %%
grid = DataGrid(df)
# %%
display(grid)
# %%
# SANITY CHECK:
button = ipywidgets.Button(
description="Button",
disabled=False
)
def on_click(b):
print("CLICK")
button.on_click(on_click)
display(button)

错误消息

如果我使用谷歌Chrome开发工具,我可以在浏览器中看到更多的日志,这些日志会给出一些错误消息,其中大部分都是重复的:

manager.js:305 Uncaught (in promise) Error: Module ipydatagrid, semver range ^1.1.11 is not registered as a widget module
at C.loadClass (manager.js:305:19)
at C.<anonymous> (manager-base.js:263:46)
at l (manager-base.js:44:23)
at Object.next (manager-base.js:25:53)
at manager-base.js:19:71
at new Promise (<anonymous>)
at Rtm6.k (manager-base.js:15:12)
at C.e._make_model (manager-base.js:257:16)
at C.<anonymous> (manager-base.js:246:45)
at l (manager-base.js:44:23)
utils.js:119 Error: Could not create a model.
at n (utils.js:119:27)
at async C._handleCommOpen (manager.js:61:51)
at async v._handleCommOpen (default.js:994:100)
at async v._handleMessage (default.js:1100:43)
manager-base.js:273 Could not instantiate widget

但是,对于用户来说,没有明显的错误消息,包括在print语句发送输出的日志中。

SageMaker Studio当前运行JupyterLab v1.2(由Help>About JupyterLab确认(,根据ipydatagrid安装说明,此小部件的当前/最新版本需要v3+。。。所以我认为这很可能是你的问题——因为这些主要版本之间的扩展接口发生了突破性的变化。

我快速查看了ipydatagrid的过去版本,看看是否可以使用旧版本,并且似乎在v0.2.16和v1.0.1(在GitHub上相邻(之间添加了文档化的JLv3需求。

然而,0.2上记录的旧安装说明似乎不再有效:我得到了ValueError: "jupyter-datagrid" is not a valid npm package,还注意到版本<PyPI上似乎没有1.0。

因此,不幸的是,我认为(除非SM Studio获得JupyterLab版本升级(,除非你从旧的源代码版本着手构建,否则这个小部件不太可能工作。

最新更新