Как я могу получить завершение табуляции в интерактивном интерпретаторе 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. Есть ли способ сделать это?
Крис Андерсон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.