21

IPython(0.13.1)インストールしてインストールし、スクリプトipdb(0.7)に行を挿入して実行しました。今、私は ipdb プロンプトにいて、いくつかのオートコンプリート (裸のタブなど) がありますが、IPython に入ったときに得られるオートコンプリートと同じではありません。ipdbプロンプトでは、(インポート後)IPythonのように属性のリストが表示されません。ipdb を使用した IPython と同じタブ補完を取得するにはどうすればよいですか?import ipdb;ipdb.set_trace()python my_script.pyrequests.<tab>

ところで、タブ補完を実行python -m ipdb my_script.pyすると、IPython と同じように機能しますが、これの欠点は、配置した行ではなく最初の行からデバッガーを起動することimport ipdb;ipdb.set_trace()です。

4

5 に答える 5

6

Virtualenvを使用ipython==0.13.2してMacで同じ現象が発生しました。デバッグしようとすると、ビルトインのタブ補完がありましたが、現在のスコープの変数はありませんでした。ホームフォルダー(http://docs.python.org/2/library/pdb.html#id2 )にカスタムがあることを発見しました。すべてをコメントアウトした後、タブ補完が再び機能しました。ipdb==0.7Python 2.7.5.pdbrc

いつ、なぜこのファイルを追加したのかはわかりませんが、そこにあったのは次のとおりです。

# See http://docs.python.org/2/library/pdb.html#id2 for the structure of this file.
import pdb

# 'inspect x' will print the source code for a method, class or function.
alias inspect import inspect;print inspect.getsource(%1)
alias i import inspect;print inspect.getsource(%1)
# 'help x' opens the man-style help viewer from the interpretter on an object
alias help !print help(%1)
alias h !print help(%1)
# For ordinary Python objects, ppo will pretty-print members and their values.
alias ppo pp %1.__dict__
# ppio runs ppo over a sequence of objects
alias ppio pp [a.__dict__ for a in %1]

# This tries to enable tab-completion of some identifiers.
!import rlcompleter
!pdb.Pdb.complete = rlcompleter.Completer(locals()).complete

# Taken from https://gist.github.com/1125049
# There are a couple of edge cases where you can lose terminal
# echo. This should restore it next time you open a pdb.
!import termios, sys
!termios_fd = sys.stdin.fileno()
!termios_echo = termios.tcgetattr(termios_fd)
!termios_echo[3] = termios_echo[3] | termios.ECHO
!termios_result = termios.tcsetattr(termios_fd, termios.TCSADRAIN, termios_echo)

何がタブ補完を壊しているのかを確認するには、さらなる調査が必要です...

于 2013-08-06T09:22:43.103 に答える
3

easy_install readline役に立ちますか?

于 2013-02-28T01:23:29.997 に答える
3

ubuntu 14.04でも同じ問題が発生し、次の方法で修正しました:

apt-get install libncurses5-dev

pip install --upgrade readline

于 2016-08-12T18:19:11.730 に答える
2

2019-11の時点で変更点はほとんどないため、修正すべき点は次のとおりです。

pip install --upgrade ipdb gnureadline ptpython

# Handly to enable ipdb on pytest exceptions
export PYTEST_ADDOPTS='--pdb --pdbcls=IPython.terminal.debugger:Pdb'
于 2019-11-27T12:01:47.177 に答える