Jak mogę uzyskać tabulację w interaktywnym interpreterie Pythona?

14

Często używam interaktywnego interpretera języka Python 3000, ale brakuje mu wygody uzupełniania tabulatorów, do której jestem przyzwyczajony z ipython, który nie jest dostępny dla Python 3.x.

Jak włączyć uzupełnianie tabulatorów we wszystkich wersjach 2.6 i 3.x?

Stefano Palazzo
źródło

Odpowiedzi:

17

Najpierw utwórz nowy plik o nazwie .pythonstartup.pyw katalogu domowym. Umieść w nim następujący skrypt:

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

Nawiasy wokół łańcucha zapewniają, że działa on zarówno z Python 2, jak i Python 3.

Za każdym razem, gdy interaktywny interpreter jest uruchamiany, wykonuje skrypt zdefiniowany w $PYTHONSTARTUP, jeśli taki istnieje. Aby ustawić wykonanie powyższego skryptu, wpisz

export PYTHONSTARTUP="~/.pythonstartup.py"

Powinieneś zapisać ten wiersz do swojego pliku .bashrclub.bash_profile pliku, aby był on automatycznie wykonywany po uruchomieniu nowej powłoki.

Stefano Palazzo
źródło
6
UWAGA: To nie zadziała, jeśli uruchomisz terminal, a następnie zmienisz katalog. Jeśli chcesz, aby ta metoda działała bez względu na katalog, którym jesteś, powinieneś użyć pełnej ścieżki, takiej jakexport PYTHONSTARTUP="/home/user/.pythonstartup.py"
Pithikos,
1
Możesz sprawić, że eksport będzie trochę bardziej tolerancyjny, mając eksportPYTHONSTARTUP=~/.pythonstartup.py
Mikael Fremling
To nie działa, jeśli uruchomisz plik w trybie interaktywnym, np python -i main.py. Jakiś sposób to zrobić?
Chris Anderson