如何在ipdb调试器中使用python的gevent.monkey.path_sys()?

时间:2014-05-07 17:32:56

标签: python ipython readline gevent ipdb

我正在使用python的gevent库,并且在等待用户输入时不希望raw_input(或更具体地说,cmd.Cmd中的事件循环)阻塞。因此,我使用gevent.monkey.patch_sys()来确保在等待用户输入时我的其他greenlet可能会运行。效果很好,除了它似乎与readline互动。

例如,我在ipython的ipdb调试器中不再有历史记录和自动完成,因为箭头键不再有效。这可以通过这个简单的片段看出:

from gevent import monkey
monkey.patch_sys()

import ipdb; ipdb.set_trace()
# now hit arrow keys at the prompt

我得到以下内容:

ipdb> ^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A
*** SyntaxError: invalid syntax (<stdin>, line 1)

我已经将它追溯到我认为可能是python的readline的问题,因为我知道ipython依赖于它。

这似乎也是类似的情况:

https://github.com/gevent/gevent/issues/6

但在我的情况下,我想在调试器中专门使用自动完成和历史记录。

我在iterm中运行OSX。这是控制台设置特有的吗?或者补丁中的某些内容从根本上打破了readline

有关如何解决的任何想法?

0 个答案:

没有答案