You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何暂停Jupyter Notebook脚本直到按钮按下后继续运行

问题场景

在Jupyter Notebook中调用notebook_login组件完成Hugging Face账号登录,基础调用代码如下:

notebook_login()

组件运行效果如下:
notebook_login组件运行截图

核心问题

  • 登录组件放在Notebook执行流程的中间段,点击「全部运行(Run All)」时,还没完成输入Token、点击登录按钮的操作,后续单元格就已经开始执行,会因为缺少鉴权信息报错。
  • 现有公开的Jupyter暂停等待用户输入的方案,都是针对自定义开发的按钮组件实现的,没有通用适配逻辑,无法直接套用在官方提供的notebook_login组件上。
可直接复用的解决方法

方法1:兼容所有版本的通用阻塞方案

不需要修改官方组件的内部逻辑,在登录组件后加一段状态校验的阻塞逻辑即可,直接替换原来的notebook_login()调用:

import time
from huggingface_hub import notebook_login, HfApi
from IPython.display import clear_output

# 渲染登录控件
notebook_login()

# 循环校验登录状态,直到登录成功再放行
while True:
    try:
        # 校验本地是否已经存在有效登录凭据
        HfApi().whoami()
        clear_output(wait=True)
        print("Hugging Face登录验证通过,继续执行后续流程")
        break
    except Exception:
        # 未登录成功则间隔1秒再次校验
        time.sleep(1)

这个方案的适配性很强:

  • 不侵入官方组件代码,不会因为组件版本迭代出现兼容问题
  • 1秒的轮询间隔几乎不占用系统资源,登录完成后会立刻继续执行,没有明显延迟
  • 点「全部运行」时单元格会一直停在登录校验环节,直到完成登录操作才会往下跑,不会出现后续代码提前执行的问题

方法2:新版库原生阻塞方案

如果使用的huggingface_hub版本在0.14及以上,直接调用新版登录组件即可,组件本身已经内置了等待用户操作完成的阻塞逻辑,不需要额外写代码:

notebook_login(new_gui=True)

注意:旧版本库没有new_gui参数,用这个方法会报错,优先用方法1的通用方案即可。


内容的提问来源于stack exchange,提问作者Penguin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 09:39:42