问题
我有一个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版本升级(,除非你从旧的源代码版本着手构建,否则这个小部件不太可能工作。