chame um EDITOR (vim) a partir de um script python

Quero chamar um editor em um script python para solicitar informações do usuário, assim comocrontab e ougit commit faz

Aqui está um trecho do que eu tenho executando até agora. (No futuro, eu poderia usar o $ EDITOR em vez do vim para que as pessoas possam personalizar ao seu gosto.)

tmp_file = '/tmp/up.'+''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(6))
edit_call = [ "vim",tmp_file]
edit = subprocess.Popen(edit_call,stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True )   

Meu problema é que, usando o Popen, parece impedir que minha E / S com o script python entre na cópia de execução do vim, e não consigo encontrar uma maneira de passar a E / S para o vim. Estou tendo o erro a seguir

Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal

Qual é a melhor maneira de chamar um programa CLI a partir de python, passar o controle para ele e passá-lo de volta assim que termina

questionAnswers(4)

yourAnswerToTheQuestion