Reputation: 809
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?
Upvotes: 57
Views: 88798
Reputation: 295
It's missing jupyter-widgets extension.
None of the command line installation options work for JupyterLab 4.
Installing the extension through the JupyterLab interface works.
jupyter-widgets
Upvotes: 0
Reputation: 8899
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.
Upvotes: 8
Reputation: 395
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.
Upvotes: 3
Reputation: 8262
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.
Upvotes: 86
Reputation: 113
I found the solution provided by Bartosz Mikulski on his blog to be very simple and easy to execute: How to display a progress bar in Jupyter Notebook
import time, sys
from IPython.display import clear_output
def update_progress(progress):
bar_length = 20
if isinstance(progress, int):
progress = float(progress)
if not isinstance(progress, float):
progress = 0
if progress < 0:
progress = 0
if progress >= 1:
progress = 1
block = int(round(bar_length * progress))
clear_output(wait = True)
text = "Progress: [{0}] {1:.1f}%".format( "#" * block + "-" * (bar_length - block), progress * 100)
print(text)
You can also refer to this Stack Overflow answer by ChristopheD and "3 Tips to Improving Your Data Science Workflow" on the Towards Data Science blog.
Upvotes: -4
Reputation: 649
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.
Upvotes: 10
Reputation: 1300
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
Upvotes: 1