Customizando o prompt interativo do python

Em algumas distros linux notei que o interpretador padrão do Python, aquele invocado pelo comando python no terminal, possuiam autocomplete e histórico. Eu sei que existe o ipython o bpython, mas em várias situações onde eles não estão disponíveis, o interpretador interativo padrão é a melhor solução.

Existe uma variavel de ambiente chamada PYTHONSTARTUP, que guarda o path do seu script de inicialização, por exemplo:

export PYTHONSTARTUP="~/.pythonstartup"

O conteúdo de ~/.pythonstartup pode ser customizando à vontade, e ainda existe uma documentação básica sobre o assunto aqui.

Um exemplo de pythonstartup :

import readline
import rlcompleter
import atexit
import os
from datetime import datetime as d

readline.parse_and_bind('tab: complete')

histfile = os.path.join(os.environ['HOME'], '.pythonhistory')

try:
    readline.read_history_file(histfile)
except IOError:
    pass

atexit.register(readline.write_history_file, histfile)

def isodate():
    return d.now().isoformat()

del os, histfile, readline, rlcompleter

Como você pode ver é possível adicionar funções e objetos personalizados para tornar seu prompt mais flexivel.