Jupyter Notebooks not displaying progress bars
Solution 1
The answer is in this GitHub issue.
The key is to ensure that you have the ipywidgets
notebook extension enabled using the following command:
jupyter nbextension enable --py widgetsnbextension
For the old JupyterLab 2.0 you'll also need to install the JupyterLab extension:
jupyter labextension install @jupyter-widgets/jupyterlab-manager
For the old JupyterLab 2.0 installing the JupyterLab extension with the command above requires that you have Node.js installed. The installer from the Node.js website includes npm
, which is also required for the command to run properly.
When using JupyterLab 3.0, the extension will be auto-installed together with ipywidgets
when you install it with pip
or conda
. Node.js is no longer required for JupyterLab 3.0.
Solution 2
An important consideration here is to have node version >=10.0.0 for this to work. To check your node version use:
node -v
Also, you may have a version of node >=10 installed, but not selected. To check the list of installed node versions, you can use the node version manager nvm
using:
nvm ls
In the example below, the selected version is 9.11.2:
-> v9.11.2
v10.4.0
v12.5.0
In order to fix this, I will have to run:
nvm use 12.5.0
Now, I can run the two commands mentioned by @Mihai:
jupyter nbextension enable --py widgetsnbextension
jupyter labextension install @jupyter-widgets/jupyterlab-manager
It should work now after refreshing the Jupyter
browser tab.
Solution 3
Read all of it before executing a command:
I followed all the instructions here, multiple times, nothing worked.
In my last try, I did:
Create new environment and install jupyterlab
From https://github.com/nodesource/distributions/blob/master/README.md#debinstall:
# Using Ubuntu
curl -fsSL https://deb.nodesource.com/setup_15.x | sudo -E bash -
sudo apt-get install -y nodejs
# Using Debian, as root
curl -fsSL https://deb.nodesource.com/setup_15.x | bash -
apt-get install -y nodejs
then:
conda install -c conda-forge nodejs
jupyter labextension install @jupyter-widgets/jupyterlab-manager
conda install -c conda-forge ipywidgets
Still it didnt work. Then as advised here, I did:
jupyter labextension install js
Restarted jupyter lab, tried the code:
import ipywidgets as widgets
widgets.IntSlider()
And it finally worked. So I guess what was missing was to install js through jupyter labextension.
Solution 4
Quick hack, if you don't want to solve it properly:
Run the command line version of tqdm
, i.e. replace from tqdm import tqdm_notebook
with from tqdm import tqdm
and run for i in tqdm(range(10000)): pass
.
This produced acceptable output for me.
Solution 5
In case you don't have node installed you can follow the instructions here: https://github.com/nodesource/distributions/blob/master/README.md#debinstall
curl -sL https://deb.nodesource.com/setup_15.x | bash -
apt-get install -y nodejsapt-get install -y nodejs
But sometime it is better to install via conda:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh
And then:
conda install -c conda-forge nodejs
jupyter labextension install @jupyter-widgets/jupyterlab-manager
Reference: https://ipywidgets.readthedocs.io/en/latest/user_install.html
J.Doe
Updated on August 02, 2022Comments
-
J.Doe over 1 year
I'm trying to get a progress bar going in Jupyter notebooks. This is a new computer and what I normally do doesn't seem to work:
from tqdm import tqdm_notebook example_iter = [1,2,3,4,5] for rec in tqdm_notebook(example_iter): time.sleep(.1)
Produces the following text output and doesn't show any progress bar
HBox(children=(IntProgress(value=0, max=5), HTML(value='')))
Similarly, this code:
from ipywidgets import FloatProgress from IPython.display import display f = FloatProgress(min=0, max=1) display(f) for i in [1,2,3,4,5]: time.sleep(.1)
produces this text output:
FloatProgress(value=0.0, max=1.0)
Is there a setting I'm missing to get Jupyter to display these progress bars?
-
Zephaniah Grunschlag about 4 yearsI tried this with a recent version of Juypterlab. The second command takes 10 minutes to run and doesn't fix the issue.
-
Zephaniah Grunschlag about 4 yearsOk, it works (partially) if you re-start the kernel, close the Jupyterlab window, and come back. It only worked partially for me because the bar doesn't draw, but I can at least see my messages come up.
-
Mihai Chelaru about 4 years@ZephaniahGrunschlag You may wish to add your experience with this fix on the GitHub thread I linked in my answer, or post a new question with your specific problem here on Stack Overflow, and link to this question for context. Given that it worked for a number of people, I think it's hardly fair for you to downvote my answer because it doesn't work in your specific case half a year after I posted this answer.
-
Oren about 4 yearsWorth mentioning that node,js is needed. I'm not using conda, therefore I've issued on a mac ' brew install node'.
-
HWM-Rocker about 4 yearsI had also install npm. Otherwise the installation of the lab-manager failed.
-
Thamme Gowda almost 4 yearswish this becomes auto installed and enabled with
jupyter lab
-
Ziofil over 3 yearsIn case you need to reinstall nodejs, you my want to uninstall the conda version (which is stuck to 6.13.1 at the moment)
-
rocksNwaves over 3 yearsUnfortunately, this solution did not work for me. With node.js v12.16.1 and the ipywidgets extension installed, I still just get the plain old
HBOX(children=...)
static print out. I believe I already have the@jupyter-widgets/jupyterlab-manager
installed, and trying to install it again causes ~20 page traceback of a recursion error. -
krassowski about 3 yearsnote: Node.js is not needed for JupyterLab 3.0+; the extension can be installed with pip, and should auto-activate.