Tab-Completion in der Python-Shell aktivieren

Nov. 19, 2011·
Julio Batista Silva
Julio Batista Silva
· 2 Min Lesezeit
  1. Lege die Datei ~/.pyrc mit folgendem Inhalt an:

    $ 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")
    

    Wenn du nur unter Linux arbeitest, ist das try nicht zwingend nötig; ich habe es um import readline gelegt, weil GNU Readline außerhalb von Linux Probleme machen kann.

  2. Exportiere die Variable, damit sie jedes Mal geladen wird, wenn eine Python‑Shell startet (voller Pfad mit /home/usuario):

    export PYTHONSTARTUP="/home/julio/.pyrc"
    
  3. Füge dieselbe Zeile in .bashrc und .zshrc ein, damit die Variable immer gesetzt wird. In csh ist die Variablenzuweisung anders; dort in ~/.cshrc hinzufügen:

    setenv PYTHONSTARTUP ~/.pythonrc"
    
  4. Fertig! Mit TAB wird die Liste möglicher Vervollständigungen angezeigt:

    $ 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(
    

Alternativen

Es gibt erweiterte Python‑Shells wie iPython. Sie sind interaktiv, einfach zu nutzen und bringen u. a. Autocompletion mit.

Die offizielle Wiki‑Seite listet weitere Optionen.

Julio Batista Silva
Autoren
Senior Cloud-Entwickler
comments powered by Disqus