Kann mich jemand auf ein funktionierendes Setup für die Verwendung von Babel mit IPython verweisen?
Ich sehe ein seltsames Einrückungsverhalten, wenn ich versuche, Funktionen zu definieren. Dies geschieht unabhängig davon, ob ich das --classic
Flag in spezifiziere oder nicht org-babel-python-command
. Mein aktueller Befehl (Linux mit Emacs 24.4 ausführen):
(setq org-babel-python-command
"ipython --pylab=qt4 --pdb --nosep --classic --no-banner --no-confirm-exit")
Dies funktioniert nicht mit Funktionsdefinitionen.
#+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
Dies scheint auch nichts damit zu --classic
tun zu haben, da ich den gleichen Fehler erhalte:
Bonuspunkte, wenn Sie ein funktionierendes Setup haben, das mich nicht zwingt, es zu verwenden, --classic
da mir die Formatierung der "modernen" Benutzeroberfläche gefällt.
Aktualisieren
Mit dem Befehl magic kann ich Funktionen definieren und eine Sitzung auswerten, aber ohne eine kann ich keine Wertausgabe erhalten. Stattdessen bekomme ich:
#+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:
Es werden keine Ergebnisse zurückgegeben, anscheinend weil alle >>>
in der Ausgabe nicht korrekt analysiert wurden.
:results value
Sie Ihren Python-Code ändern müssen, indem Sie entweder eine explizitereturn
Anweisung hinzufügen oder einer Variablen zuweisenfoo
und:return foo
dem Header hinzufügen . Aber selbst mit diesen Korrekturen funktioniert es in ipython nicht - siehe meinen zweiten Kommentar zu meiner Antwort unten.