我有IPython(0.13.1)
和ipdb(0.7)
安装,我插入的行import ipdb;ipdb.set_trace()
在我的剧本跑python my_script.py
。 现在,我在IPDB提示并有一些自动完成(如裸标签),但它不一样自动完成的,当我进入我的IPython得到。 在IPDB提示requests.
然后<tab>
(导入后)不给我的属性列表,如IPython中。 我如何获得相同的选项卡完成在IPython中与IPDB?
顺便说一句,当我运行python -m ipdb my_script.py
选项卡完成的工作就像在IPython中,但是这样做的缺点是,它开始从第一行,而不是我放线调试器import ipdb;ipdb.set_trace()
。
我使用了我的Mac上同样的现象ipython==0.13.2
和ipdb==0.7
一个内部Python 2.7.5
的virtualenv。 当我试图调试,我曾经为内建的标签完成,而不是在当前范围内的变量。 我发现,我有一个自定义.pdbrc
位于我的主文件夹( http://docs.python.org/2/library/pdb.html#id2 )。 我评论所有的东西出来后,标签再次完成工作。
我不知道什么时候,为什么我添加了这个文件,但是这是在那里:
# 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)
需要进一步的研究来检查什么在那里打破了制表完成...
是否easy_install readline
帮助?
我有同样的问题,我有固定它:
sudo pip install --upgrade ipdb ipython readline
如果你没有readline
安装,确保安装libncurses5-dev
作为@ musashi14建议。
我曾在Ubuntu 14.04的同样的问题,得到它固定的:
apt-get install libncurses5-dev
pip install --upgrade readline