如何在 jupyter 实验室中使用 FileUpload 小部件?

Posted

技术标签:

【中文标题】如何在 jupyter 实验室中使用 FileUpload 小部件?【英文标题】:How to use FileUpload widget in jupyter lab? 【发布时间】:2020-11-22 17:05:43 【问题描述】:

我想在 jupyter 实验室中使用 FileUpload 小部件。 我的笔记本单元格中有以下代码行:

uploader = widgets.FileUpload()
uploader

在 jupyter notebook 中,单元格的输出是一个可点击的按钮,我可以使用它来上传文件。在 jupyter 实验室中,输出如下:

FileUpload(value=, description='Upload')

这是uploader 对象的信息:

Type:           FileUpload
String form:    FileUpload(value=, description='Upload')
File:           ~/miniconda3/envs/fastai2/lib/python3.7/site-packages/ipywidgets/widgets/widget_upload.py

是否可以让这个小部件在 jupyter lab 上工作?如果是这样,我应该如何进行?

【问题讨论】:

【参考方案1】:

如果您使用的是开箱即​​用的 jupyterlab,它默认没有启用 ipywidgets,您需要在启用扩展后重新构建它。按照here的步骤:

    安装nodeJS pip install ipywidgets jupyter nbextension enable --py widgetsnbextension jupyter labextension install @jupyter-widgets/jupyterlab-manager (可能需要重新启动您的实验室)

它说较新的 Jupyterlab 已启用它,但我仍然遇到问题,具体取决于平台。手动安装通常是要走的路。

【讨论】:

我认为我缺少的步骤是第 3 步或第 4 步,按照您的指示,一切正常。谢谢! @StatisticDean,是的,这并不明显,因为通常安装一个模块就足够了。不过,JupyterLab 并非如此。每次安装扩展或更新时,都需要重新构建。【参考方案2】:

对我来说,它在之后起作用

pip install jupyterlab-widgets
jupyter labextension install @jupyter-widgets/jupyterlab-manager

另见

https://developer.aliyun.com/mirror/npm/package/@jupyter-widgets/jupyterlab-manager

用法

from ipywidgets import FileUpload
from IPython.display import display
upload = FileUpload(accept='.txt', multiple=True)
display(upload)

with open('z_merged_output.txt', 'wb') as output_file: 
    for uploaded_filename in upload.value:
        content = upload.value[uploaded_filename]['content']   
        output_file.write(content) 

【讨论】:

【参考方案3】:

如果您已经安装了ipywidgets,您可能需要更新它:

pip install -U ipywidgets

然后安装新版本的文件:

jupyter nbextension install --py widgetsnbextension

【讨论】:

以上是关于如何在 jupyter 实验室中使用 FileUpload 小部件?的主要内容,如果未能解决你的问题,请参考以下文章

如何码头化 Jupyter 实验室

jupyter 实验室中的自动单元执行时间

在 Jupyter 实验室/笔记本中突出显示检查函数的源代码

在jupyter实验室中加载bokehJS

jupyter实验室中的plot.ly离线模式不显示绘图

Jupyter 实验室快捷方式