Alguém pode me indicar uma configuração de trabalho para usar o babel com o IPython?
Estou testemunhando um comportamento de indentação estranho quando tento definir funções. Isso acontece independentemente de eu especificar ou não o --classicsinalizador org-babel-python-command. Meu comando atual (executando o linux com o Emacs 24.4):
(setq org-babel-python-command
"ipython --pylab=qt4 --pdb --nosep --classic --no-banner --no-confirm-exit")
Isso não funciona com definições de função.
#+BEGIN_SRC python :session *Broken IPython* :results output pp
def g(x, lst):
if isinstance(x, float):
x = x + 0
return [item + x for item in lst]
#+END_SRC

Isso também não parece relacionado --classic, pois recebo o mesmo erro:

Pontos de bônus se você tiver uma configuração de trabalho que não me force a usar, --classiccomo eu gosto da formatação da interface "moderna".
Atualizar
O uso do comando magic permite definir funções e avaliar uma sessão, mas não consigo obter uma saída de valor sem uma. Em vez disso, recebo:
#+BEGIN_SRC python :results output
def f(x):
return x + 2
f(2)
#+END_SRC
#+RESULTS:
: >>> ... ... >>> 4
: >>>
#+BEGIN_SRC python :results value
def f(x):
return x + 2
f(2)
#+END_SRC
#+RESULTS:
Nenhum resultado é retornado, aparentemente porque todo >>>o resultado da saída não está sendo analisado corretamente.
:results valueexige que você modifique seu código python adicionando umareturndeclaração explícita ou atribuindo a uma variávelfooe adicionando:return fooao cabeçalho. Mas mesmo com essas correções, não funcionará no ipython - veja meu segundo comentário na minha resposta abaixo.