Jupyter笔记本中使用IPython display(markdown())后,输入(input())无法显示

4

我正在尝试在Google Colab上使用Jupyter Notebook构建一个聊天机器人。我使用IPython Markdown来更好地区分用户对话。用户将使用input()输入消息,而机器人响应则为IPythondisplay(markdown())

当我尝试打印起始消息(在用户输入之前的机器人输出)时,遇到了问题。脚本运行时大约50%的时间会出现此错误。如果没有打印起始消息,则不会出现任何错误。我尝试重新启动内核,但没有效果。

有人知道原因并能告诉我如何解决吗?

这是一个成功案例的示例。 Successful example

这是一个失败案例的示例。如您所见,代码在input()行上无限制地运行。 Failed to load

以下是样本代码,其中input()框有时不会弹出。

from IPython.display import Markdown, display

display(Markdown("*Alex:* Hello."))

input(">> You: ")

1
我遇到了同样的问题,但是当我尝试从Graphviz显示图像时。如果在显示和输入语句之间添加time.sleep(),似乎可以解决问题。 - Matt Spataro
1个回答

1

这似乎是Jupyter笔记本中的一种错误,被许多程序员在过去几年中描述过。我也遇到了同样的问题。经过几次测试,我发现(至少在我的代码中),如果在input()之前删除print()函数,则问题会消失。


很有趣,感谢您的输入!目前似乎还没有直接解决这个错误的答案。 - Goh Jia Yi
@Goh Jia Yi 这个回答已经几年了,但你提到这是一个已知的 bug -- 你有任何现有的 GitHub 问题链接等关于这个 bug 的讨论吗?我也遇到了同样的问题,到目前为止,这个 Stack Overflow 帖子是我能找到唯一提到它的地方。 - Seth
非常抱歉之前没有回复:我在不同的论坛上看到了一些关于这个bug的评论,但在GitHub上没有看到任何相关内容。 - aprod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接