How to use FileUpload widget in jupyter lab?

Question:

I want to use the FileUpload widget in jupyter lab.
I have the following lines of code in my notebook cell:

uploader = widgets.FileUpload()
uploader

In jupyter notebook, the output of the cell is a clickable button that I can use to upload a file. In jupyter lab, the output is the following :

FileUpload(value={}, description='Upload')

Here’s the info on the uploader object :

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

Is it possible to make this widget work on jupyter lab? And if so how should I proceed ?

Asked By: Statistic Dean

||

Answers:

If you’re using jupyterlab out the box, it doesn’t have ipywidgets enabled by default, you need to rebuild it after enabling the extension. Follow the steps from here:

  1. Install nodeJS
  2. pip install ipywidgets
  3. jupyter nbextension enable --py widgetsnbextension
  4. jupyter labextension install @jupyter-widgets/jupyterlab-manager
  5. (may need to restart your lab)

It says that newer Jupyterlab has it enabled, but I still had troubles with it, depending on the platform. Manual install is usually the way to go.

Answered By: ptyshevs

If you’ve already got ipywidgets installed you may need to update it:

pip install -U ipywidgets

And then install the newer version’s files:

jupyter nbextension install --py widgetsnbextension
Answered By: Pierz

For me it worked after

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

Also see

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

Usage

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) 

enter image description here

Answered By: Stefan

For me, it worked after running the below code

!jupyter nbextension enable --py --sys-prefix widgetsnbextension
!jupyter nbextension enable fileupload --user --py
(doesnot require restarting of kernel)
Answered By: dhanesh12twice