誰かがIPythonでbabelを使用するための実際の設定を教えてもらえますか?
関数を定義しようとすると、奇妙なインデント動作が見られます。これは、で--classic
フラグを指定したかどうかに関係なく発生しますorg-babel-python-command
。私の現在のコマンド(Emacs 24.4でLinuxを実行):
(setq org-babel-python-command
"ipython --pylab=qt4 --pdb --nosep --classic --no-banner --no-confirm-exit")
これは関数定義では機能しません。
#+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
--classic
私は同じエラーを受け取るので、これはどちらにも関連していないようです:
--classic
「モダン」インターフェースのフォーマットが好きなので、使用を強制しない動作設定がある場合のボーナスポイント。
更新
magicコマンドを使用すると、関数を定義してセッションを評価できますが、値なしでは値を出力できません。代わりに、私は得ます:
#+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:
結果のすべてが>>>
正しく解析されていないため、結果は返されません。
:results value
明示的なreturn
ステートメントを追加するか、変数に割り当ててヘッダーにfoo
追加:return foo
することにより、Pythonコードを変更する必要があるため、「更新」の2番目のブロックは機能しません。しかし、それらの修正があってもipythonでは機能しません-以下の私の回答に対する2番目のコメントを参照してください。