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

JupyterLite/Pyodide Kernel中input返回PyodideFuture?如何正确获取输入?

问题分析与解决方法

这不是Jupyter的bug,而是**基于Pyodide的在线Jupyter环境(如JupyterLite)**的特性差异导致的:

  • 本地VS Code使用标准CPython,input()是同步阻塞调用,直接返回用户输入的字符串,转int操作正常。
  • 在线Pyodide环境运行在浏览器中,受JavaScript异步机制限制,input()被实现为异步函数,返回的是PyodideFuture对象而非字符串,直接转int就会触发类型错误。

解决方案

方法1:使用await获取异步输入结果

PyodideFuture是可等待对象,需要用await关键字等待输入完成,拿到实际的字符串值:

term_no = await input('Enter number of approximations to use: ')
term_no = int(term_no)
print(term_no)

如果在自定义函数中使用,需将函数声明为异步:

async def get_term_no():
    term_no = await input('Enter number of approximations to use: ')
    return int(term_no)

term_no = await get_term_no()
print(term_no)

方法2:使用Jupyter交互组件获取输入

如果不想用异步逻辑,可以借助ipywidgets组件实现同步式输入:

from ipywidgets import IntText, Button, HBox
from IPython.display import display

# 创建输入框和按钮
input_widget = IntText(description='近似项数:')
submit_btn = Button(description='确认')

# 定义按钮点击事件
def handle_submit(_):
    term_no = input_widget.value
    print(term_no)

submit_btn.on_click(handle_submit)
# 显示组件
display(HBox([input_widget, submit_btn]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:12:37