Как я могу получить завершение табуляции в интерактивном интерпретаторе Python?

14

Я часто использую интерактивный интерпретатор Python 3000, но в нем отсутствует удобство завершения табуляции, к которому я привык из ipython, который недоступен для Python 3.x.

Как мне включить завершение табуляции во всех них, 2.6 и 3.x?

Стефано Палаццо
источник

Ответы:

17

Сначала создайте новый файл с именем .pythonstartup.pyв вашем домашнем каталоге. Поместите в него следующий скрипт:

try:
    import readline
except ImportError:
    print("Module readline not available.")
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

Скобки вокруг строки гарантируют, что она работает как с Python 2, так и с Python 3.

Каждый раз, когда интерактивный интерпретатор запускается, он выполняет сценарий, определенный в нем $PYTHONSTARTUP, если он есть. Чтобы настроить его на выполнение вышеуказанного сценария, введите

export PYTHONSTARTUP="~/.pythonstartup.py"

Вы должны записать эту строку в свой файл .bashrcили.bash_profile файл, чтобы она автоматически выполнялась при запуске новой оболочки.

Стефано Палаццо
источник
6
ВНИМАНИЕ: Это не будет работать, если вы запустите терминал, а затем смените каталог. Если вы хотите, чтобы этот метод работал независимо от того, в какой директории вы находитесь, вы должны использовать полный путь, напримерexport PYTHONSTARTUP="/home/user/.pythonstartup.py"
Pithikos
1
Вы можете сделать экспорт немного более терпимым, имея экспортPYTHONSTARTUP=~/.pythonstartup.py
Микаэль Фремлинг
Это не работает, если вы запускаете файл в интерактивном режиме, например python -i main.py. Есть ли способ сделать это?
Крис Андерсон