Activar el autocompletado en el shell de Python

nov 19, 2011·
Julio Batista Silva
Julio Batista Silva
· 2 min de lectura
blog Linux
  1. Crea el archivo ~/.pyrc con el siguiente contenido:

    $ cat .pyrc
    # ~/.pyrc
    # enable syntax completion
    try:
        import readline
    except ImportError:
        print "Module readline not available."
    else:
        import rlcompleter
        readline.parse_and_bind("tab: complete")
    

Si solo lo vas a usar en Linux ese try no hace falta; lo puse alrededor de import readline porque ese módulo usa la biblioteca GNU readline, que puede dar problemas fuera de Linux.

  1. Exporta la variable que se lee al abrir cada shell de Python (usa la ruta completa con /home/usuario):

    julio@julio-acer ~> export PYTHONSTARTUP="/home/julio/.pyrc"
    
  2. Pon esa misma línea en .bashrc y .zshrc para que la variable se defina siempre. En csh la asignación de variables es distinta; añade la siguiente línea a ~/.cshrc:

    setenv PYTHONSTARTUP ~/.pythonrc"
    
  3. ¡Listo! Pulsa TAB para ver la lista de posibles autocompletados:

    $ python
    Python 3.2.2 (default, Sep  5 2011, 04:52:19)
    [GCC 4.6.1 20110819 (prerelease)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import re
    >>> re.
    re.A                  re.__eq__(            re._compile(
    re.ASCII              re.__file__           re._compile_repl(
    re.DEBUG              re.__format__(        re._compile_typed(
    re.DOTALL             re.__ge__(            re._expand(
    re.I                  re.__getattribute__(  re._pattern_type(
    re.IGNORECASE         re.__gt__(            re._pickle(
    re.L                  re.__hash__(          re._subx(
    re.LOCALE             re.__init__(          re.compile(
    re.M                  re.__le__(            re.copyreg
    re.MULTILINE          re.__lt__(            re.error(
    re.S                  re.__name__           re.escape(
    re.Scanner(           re.__ne__(            re.findall(
    re.T                  re.__new__(           re.finditer(
    re.TEMPLATE           re.__package__        re.functools
    re.U                  re.__reduce__(        re.match(
    re.UNICODE            re.__reduce_ex__(     re.purge(
    re.VERBOSE            re.__repr__(          re.search(
    re.X                  re.__setattr__(       re.split(
    re.__all__            re.__sizeof__(        re.sre_compile
    re.__cached__         re.__str__(           re.sre_parse
    re.__class__(         re.__subclasshook__(  re.sub(
    re.__delattr__(       re.__version__        re.subn(
    re.__dict__           re._alphanum_bytes    re.sys
    re.__doc__            re._alphanum_str      re.template(
    

Alternativas

Hay shells de Python mejorados, como iPython. Es bastante sencillo, interactivo y trae varias funciones interesantes, entre ellas el autocompletado.

El wiki oficial sugiere algunos más.

Julio Batista Silva
Autores
Senior Cloud Developer

Soy un ingeniero informático brasileño radicado en Alemania, apasionado por la tecnología, la ciencia, la fotografía y los idiomas.

Llevo programando cerca de dos décadas, explorando desde apps móviles y desarrollo web hasta aprendizaje automático. Hoy me enfoco en SRE en la nube e ingeniería de datos.

Soy voluntario en las comunidades de open source y Python, ayudando a organizar PyCon DE y PyData Berlin, dando mentorías y contribuyendo con código y traducciones.

En mi blog comparto consejos de Linux, guías de configuración y notas personales que escribí como referencia futura. Espero que también sean útiles para otras personas. El contenido está disponible en varios idiomas.

Visita mi galería para ver algunas de mis fotografías.

Fuera del teclado, me encontrarás en conciertos, tocando el clarinete, en bicicleta, buceando o explorando nuevos lugares, culturas y cocinas.

¡Siempre feliz de conectar! 🙂

comments powered by Disqus