¿Alguien puede señalarme una configuración de trabajo para usar babel con IPython?
Estoy presenciando un extraño comportamiento de sangría cuando intento definir funciones. Esto sucede si especifico o no la --classic
bandera org-babel-python-command
. Mi comando actual (ejecutar Linux con Emacs 24.4):
(setq org-babel-python-command
"ipython --pylab=qt4 --pdb --nosep --classic --no-banner --no-confirm-exit")
Esto no funciona con definiciones de funciones.
#+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
Esto tampoco parece estar relacionado --classic
ya que obtengo el mismo error:
Puntos de bonificación si tiene una configuración funcional que no me obliga a usar, --classic
ya que me gusta el formato de la interfaz "moderna".
Actualizar
El uso del comando mágico me permite definir funciones y evaluar una sesión, pero no puedo obtener un valor sin una. En cambio, obtengo:
#+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:
No se devuelven resultados, aparentemente debido a que todo el contenido >>>
de la salida no se analiza correctamente.
:results value
requiere que modifique su código de Python agregando unareturn
declaración explícita o asignando a una variablefoo
y agregando:return foo
al encabezado. Pero incluso con esas correcciones no funcionará en ipython: vea mi segundo comentario a mi respuesta a continuación.