¿Cómo puedo obtener la finalización de tabulación en el intérprete interactivo de Python?

14

A menudo uso el intérprete interactivo de Python 3000, pero me falta la comodidad de completar pestañas a la que estoy acostumbrado desde ipython, que no está disponible para Python 3.x.

¿Cómo habilito la finalización de pestañas en todos ellos, 2.6 y 3.x?

Stefano Palazzo
fuente

Respuestas:

17

Primero, cree un nuevo archivo llamado .pythonstartup.pyen su directorio de inicio. Ponga el siguiente script en él:

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

Los paréntesis alrededor de la cadena aseguran que funcione tanto con Python 2 como con Python 3.

Cada vez que se inicia el intérprete interactivo, ejecuta un script definido en $PYTHONSTARTUP, si hay uno. Para configurarlo para ejecutar el script anterior, escriba

export PYTHONSTARTUP="~/.pythonstartup.py"

Debe escribir esta línea en su archivo .bashrco.bash_profile , para que se ejecute automáticamente cuando se inicia un nuevo shell.

Stefano Palazzo
fuente
66
AVISO: Esto no funcionará si inicia el terminal y luego cambia el directorio. Si desea que este método funcione sin importar el directorio en el que se encuentre, debe usar la ruta completa comoexport PYTHONSTARTUP="/home/user/.pythonstartup.py"
Pithikos
1
Puede hacer que la exportación sea un poco más tolerante si tiene exportaciónPYTHONSTARTUP=~/.pythonstartup.py
Mikael Fremling
Esto no funciona si inicia un archivo en modo interactivo, por ejemplo python -i main.py. ¿Alguna manera de hacer eso?
Chris Anderson