Ubuntu – How to get tab-completion in the interactive Python interpreter

command lineprogrammingpython

I often use Python 3000's interactive interpreter, but it's missing the convenience of tab-completion I'm used to from ipython, which isn't available for Python 3.x.

How do I enable tab completion in all of them, 2.6 and 3.x?

Best Answer

First, create a new file called .pythonstartup.py in your home directory. Put the following script in it:

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

The parentheses around the string ensure that it works with both Python 2 and Python 3.

Every time the interactive interpreter is started, it executes a script defined in $PYTHONSTARTUP, if there is one. To set it to execute the above script, type

export PYTHONSTARTUP="~/.pythonstartup.py"

You should write this line to your .bashrc or .bash_profile file, so that it's automatically executed when a new shell is started.