Jupyter 笔记本不显示进度条
Jupyter Notebooks not displaying progress bars
我正在尝试在 Jupyter 笔记本中设置进度条。这是一台新电脑,我通常做的似乎不起作用:
from tqdm import tqdm_notebook
example_iter = [1,2,3,4,5]
for rec in tqdm_notebook(example_iter):
time.sleep(.1)
产生以下文本输出并且不显示任何进度条
HBox(children=(IntProgress(value=0, max=5), HTML(value='')))
同样,这段代码:
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)
生成此文本输出:
FloatProgress(value=0.0, max=1.0)
是否缺少让 Jupyter 显示这些进度条的设置?
关键是确保使用以下命令启用 ipywidgets
笔记本扩展:
jupyter nbextension enable --py widgetsnbextension
对于旧的 JupyterLab 2.0,您还需要 install the JupyterLab extension:
jupyter labextension install @jupyter-widgets/jupyterlab-manager
对于旧的 JupyterLab 2.0,使用上述命令安装 JupyterLab 扩展需要您有 Node.js installed。来自 Node.js 网站的安装程序包括 npm
,这也是命令正确 运行 所必需的。
使用 JupyterLab 3.0 时,当您使用 pip
或 conda
安装时,扩展将与 ipywidgets
一起自动安装. JupyterLab 3.0 不再需要 Node.js。
此处的一个重要考虑因素是让节点版本 >=10.0.0 才能正常工作。
要检查您的节点版本,请使用:
node -v
此外,您可能安装了 >=10 的节点版本,但未选择。要检查已安装的节点版本列表,您可以使用节点版本管理器 nvm
使用:
nvm ls
在下面的示例中,选择的版本是 9.11.2:
-> v9.11.2
v10.4.0
v12.5.0
为了解决这个问题,我将不得不 运行:
nvm use 12.5.0
现在,我可以运行 @Mihai 提到的两个命令了:
jupyter nbextension enable --py widgetsnbextension
jupyter labextension install @jupyter-widgets/jupyterlab-manager
刷新 Jupyter
浏览器选项卡后现在应该可以使用了。
如果您没有安装节点,您可以按照此处的说明进行操作: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
但有时最好通过 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
然后:
conda install -c conda-forge nodejs
jupyter labextension install @jupyter-widgets/jupyterlab-manager
参考:https://ipywidgets.readthedocs.io/en/latest/user_install.html
我发现 Bartosz Mikulski 在他的博客上提供的解决方案非常简单易行: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)
也可以参考this Stack Overflow answer by ChristopheD and "3 Tips to Improving Your Data Science Workflow" on the Towards Data Science blog.
在执行命令之前阅读所有内容:
我按照此处的所有说明进行了多次操作,但没有任何效果。
在我最后一次尝试中,我做了:
创建新环境并安装jupyterlab
来自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
然后:
conda install -c conda-forge nodejs
jupyter labextension install @jupyter-widgets/jupyterlab-manager
conda install -c conda-forge ipywidgets
还是不行。然后按照建议here,我做了:
jupyter labextension install js
重启jupyter lab,尝试代码:
import ipywidgets as widgets
widgets.IntSlider()
终于成功了。所以我想缺少的是通过jupyter labextension安装js。
快速破解,如果你不想正确解决它:
运行 tqdm
的命令行版本,即将 from tqdm import tqdm_notebook
替换为 from tqdm import tqdm
和 运行 for i in tqdm(range(10000)): pass
.
这产生了我可以接受的输出。
我正在尝试在 Jupyter 笔记本中设置进度条。这是一台新电脑,我通常做的似乎不起作用:
from tqdm import tqdm_notebook
example_iter = [1,2,3,4,5]
for rec in tqdm_notebook(example_iter):
time.sleep(.1)
产生以下文本输出并且不显示任何进度条
HBox(children=(IntProgress(value=0, max=5), HTML(value='')))
同样,这段代码:
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)
生成此文本输出:
FloatProgress(value=0.0, max=1.0)
是否缺少让 Jupyter 显示这些进度条的设置?
关键是确保使用以下命令启用 ipywidgets
笔记本扩展:
jupyter nbextension enable --py widgetsnbextension
对于旧的 JupyterLab 2.0,您还需要 install the JupyterLab extension:
jupyter labextension install @jupyter-widgets/jupyterlab-manager
对于旧的 JupyterLab 2.0,使用上述命令安装 JupyterLab 扩展需要您有 Node.js installed。来自 Node.js 网站的安装程序包括 npm
,这也是命令正确 运行 所必需的。
使用 JupyterLab 3.0 时,当您使用 pip
或 conda
安装时,扩展将与 ipywidgets
一起自动安装. JupyterLab 3.0 不再需要 Node.js。
此处的一个重要考虑因素是让节点版本 >=10.0.0 才能正常工作。 要检查您的节点版本,请使用:
node -v
此外,您可能安装了 >=10 的节点版本,但未选择。要检查已安装的节点版本列表,您可以使用节点版本管理器 nvm
使用:
nvm ls
在下面的示例中,选择的版本是 9.11.2:
-> v9.11.2
v10.4.0
v12.5.0
为了解决这个问题,我将不得不 运行:
nvm use 12.5.0
现在,我可以运行 @Mihai 提到的两个命令了:
jupyter nbextension enable --py widgetsnbextension
jupyter labextension install @jupyter-widgets/jupyterlab-manager
刷新 Jupyter
浏览器选项卡后现在应该可以使用了。
如果您没有安装节点,您可以按照此处的说明进行操作: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
但有时最好通过 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
然后:
conda install -c conda-forge nodejs
jupyter labextension install @jupyter-widgets/jupyterlab-manager
参考:https://ipywidgets.readthedocs.io/en/latest/user_install.html
我发现 Bartosz Mikulski 在他的博客上提供的解决方案非常简单易行: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)
也可以参考this Stack Overflow answer by ChristopheD and "3 Tips to Improving Your Data Science Workflow" on the Towards Data Science blog.
在执行命令之前阅读所有内容:
我按照此处的所有说明进行了多次操作,但没有任何效果。
在我最后一次尝试中,我做了:
创建新环境并安装jupyterlab
来自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
然后:
conda install -c conda-forge nodejs
jupyter labextension install @jupyter-widgets/jupyterlab-manager
conda install -c conda-forge ipywidgets
还是不行。然后按照建议here,我做了:
jupyter labextension install js
重启jupyter lab,尝试代码:
import ipywidgets as widgets
widgets.IntSlider()
终于成功了。所以我想缺少的是通过jupyter labextension安装js。
快速破解,如果你不想正确解决它:
运行 tqdm
的命令行版本,即将 from tqdm import tqdm_notebook
替换为 from tqdm import tqdm
和 运行 for i in tqdm(range(10000)): pass
.
这产生了我可以接受的输出。