2

私は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)

ipythonが依存していることを知っているので、pythonのreadlineの問題であると思われるものまで追跡しました。

これも同様の状況のようです。

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

しかし、私の場合、デバッガーでオートコンプリートと履歴を具体的に使用したいと考えています。

iterm 内で OSX を実行しています。これはコンソール設定に固有のものですか? または、パッチの何かが根本的に壊れていreadlineますか?

解決方法に関するアイデアはありますか?

4

0 に答える 0