Получить вкладку IPython для ipdb - программирование
Подтвердить что ты не робот

Получить вкладку IPython для ipdb

У меня установлены IPython(0.13.1) и ipdb(0.7), я вставил строку import ipdb;ipdb.set_trace() в мой script и запустил python my_script.py. Теперь я в подсказке ipdb и есть некоторое автозаполнение (например, голая вкладка), но это не то же самое, что автозаполнение, которое я получаю, когда я вхожу в IPython. В приглашении ipdb requests. тогда <tab> (после импорта) не дает мне список атрибутов, как в IPython. Как получить ту же самую вкладку, что и в IPython с ipdb?

Btw, когда я запускаю python -m ipdb my_script.py, завершение табуляции работает так же, как и в IPython, но недостатком этого является то, что он запускает отладчик из первой строки вместо строки, которую я положил import ipdb;ipdb.set_trace().

4b9b3361

Ответ 1

У меня было то же самое явление на моем 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)

Дальнейшие исследования необходимы, чтобы проверить, что нарушает выполнение табуляции там...

Ответ 2

Помогает ли easy_install readline?

Ответ 3

У меня была такая же проблема, и я исправил ее с помощью

sudo pip install --upgrade ipdb ipython readline

Если у вас нет установленного readline, обязательно установите libncurses5-dev в качестве предлагаемого @musashi14.

Ответ 4

У меня была такая же проблема на ubuntu 14.04 и исправлена ​​с помощью:

apt-get install libncurses5-dev

pip install --upgrade readline