使用Python后,输入的终端显示会失去同步?(临时解决方法 = `reset`)

8
每当我运行交互式控制台使用pythonpython3时,提示符的显示几乎在第一次或第二次交互后立即不同步:
>>> [1,2,3]
>>> [1, 2, 3]
print('hi')
>>> hi

然后,当我退出Python时,这种行为会延续到中。此外,当您键入时,屏幕上不会显示任何内容,但它仍将运行。在下面的示例中,我键入了date然后是history | tail -n3:

$ Thu Oct  8 07:55:47 CEST 2015
$   488  python
  489  date
  490  history | tail -n3

然而,输入reset后,一切都恢复正常。

不用说,这种行为非常令人烦恼。是什么原因造成的,我该如何解决?

我正在使用 OS X。使用 iTerm 或内置的 Terminal.app 都会出现相同的行为。我的 python 构建来自 macports。在 /usr/bin/python 下没有这个问题(包含在 OS X 中的 python 2.7.2)。

============================

编辑:如果我使用zsh,那么 Python 仍然存在问题,但在退出 Python 后,zsh 中的一切都可以正常工作。

$TERMbashzsh 中都是 xterm-256color


1
可能是你的Python输出了控制字符并改变了终端的配置。这可能出现在Python的标语中。你可以尝试在启动Python之前执行s=$(stty -g),然后在之后执行stty $s来保存和恢复终端的配置。但是,在Python交互会话期间这并没有什么帮助... - Renaud Pacalet
1
你如何退出Python? - Alvaro Gutierrez Perez
1
@ÁlvaroGutiérrez 我已经尝试使用ctrl+D和exit()退出,但两者都产生了相同的结果。 - reynoldsnlp
你的 $TERM 变量设置为什么 (echo $TERM)? - Steven
@Stebalien,我在问题中添加了$TERM。它是xterm-256color。 - reynoldsnlp
显示剩余5条评论
3个回答

1
尝试在shell中执行stty sane命令。

1

@Mark已经解释了。

至于修复:

port selfupdate
# port install python(26|27|34|35) +readline
port install python27 +readline

0

正如我在AskDifferent的回答中所述,当时提出问题时,由于Macports bug没有包含readline(因为许可证原因),最近的Python构建版本在Macports下存在一个错误。

现在通过制作+readline变体并将其设置为默认值来解决了这个问题。


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