私は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
ますか?
解決方法に関するアイデアはありますか?