Jupyter Notebooks 不显示进度条

J.D*_*Doe 32 python jupyter-notebook tqdm jupyter-lab

我正在尝试在 Jupyter 笔记本中设置一个进度条。这是一台新电脑,我通常做的事情似乎不起作用:

from tqdm import tqdm_notebook
example_iter = [1,2,3,4,5]
for rec in tqdm_notebook(example_iter):
    time.sleep(.1)
Run Code Online (Sandbox Code Playgroud)

产生以下文本输出并且不显示任何进度条

HBox(children=(IntProgress(value=0, max=5), HTML(value='')))
Run Code Online (Sandbox Code Playgroud)

同样,这段代码:

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)
Run Code Online (Sandbox Code Playgroud)

产生这个文本输出:

FloatProgress(value=0.0, max=1.0)
Run Code Online (Sandbox Code Playgroud)

我是否缺少让 Jupyter 显示这些进度条的设置?

Mih*_*aru 54

答案就在这个 GitHub 问题中

关键是确保您ipywidgets使用以下命令启用了笔记本扩展:

jupyter nbextension enable --py widgetsnbextension
Run Code Online (Sandbox Code Playgroud)

对于旧的 JupyterLab 2.0,您还需要安装 JupyterLab 扩展

jupyter labextension install @jupyter-widgets/jupyterlab-manager
Run Code Online (Sandbox Code Playgroud)

对于安装JupyterLab延伸与上面的命令老JupyterLab 2.0要求您已经安装了Node.js的。Node.js 网站上的安装程序包括npm,它也是命令正常运行所必需的。

使用 JupyterLab 3.0 时,扩展将ipywidgets在您使用pip或安装时自动安装conda。JupyterLab 3.0 不再需要 Node.js。

  • 不幸的是,这个解决方案对我不起作用。安装了 node.js v12.16.1 和 ipywidgets 扩展后,我仍然只能得到普通的旧 `HBOX(children=...)` 静态打印输出。我相信我已经安装了 `@jupyter-widgets/jupyterlab-manager`,并且尝试再次安装它会导致约 20 页回溯递归错误。 (4认同)
  • 值得一提的是需要node,js。我没有使用 conda,因此我在 mac 上发布了“brew install node”。 (3认同)
  • 希望它能够通过“jupyter lab”自动安装并启用 (3认同)
  • 我用最新版本的 Juypterlab 尝试过这一点。第二个命令需要 10 分钟才能运行,并且无法解决问题。 (2认同)

Ali*_*ine 8

这里的一个重要考虑因素是让节点版本 >=10.0.0 使其工作。要检查您的节点版本,请使用:

node -v
Run Code Online (Sandbox Code Playgroud)

此外,您可能安装了一个 >=10 的节点版本,但未选择。要检查已安装的节点版本列表,您可以使用节点版本管理器nvm

nvm ls
Run Code Online (Sandbox Code Playgroud)

在下面的示例中,所选版本为 9.11.2:

->      v9.11.2
        v10.4.0
        v12.5.0
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我必须运行:

nvm use 12.5.0
Run Code Online (Sandbox Code Playgroud)

现在,我可以运行@Mihai 提到的两个命令:

jupyter nbextension enable --py widgetsnbextension
jupyter labextension install @jupyter-widgets/jupyterlab-manager
Run Code Online (Sandbox Code Playgroud)

刷新Jupyter浏览器选项卡后,它现在应该可以工作了。


tyr*_*rex 8

快速破解,如果您不想正确解决它:

运行命令行版本tqdm,即替换from tqdm import tqdm_notebookfrom tqdm import tqdm并运行for i in tqdm(range(10000)): pass

这为我产生了可接受的输出。