Ai đó có thể chỉ cho tôi một thiết lập hoạt động để sử dụng babel với IPython không?
Tôi đang chứng kiến hành vi thụt đầu dòng lạ khi tôi cố gắng xác định các chức năng. Điều này xảy ra cho dù tôi có chỉ định --classiccờ trong hay không org-babel-python-command. Lệnh hiện tại của tôi (chạy linux với Emacs 24.4):
(setq org-babel-python-command
"ipython --pylab=qt4 --pdb --nosep --classic --no-banner --no-confirm-exit")
Điều này không làm việc với các định nghĩa chức năng.
#+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

Điều này dường như không liên quan đến --classicmột trong hai khi tôi gặp cùng một lỗi:

Điểm thưởng nếu bạn có một thiết lập hoạt động không bắt buộc tôi phải sử dụng --classicvì tôi thích định dạng của giao diện "hiện đại".
Cập nhật
Sử dụng lệnh ma thuật cho phép tôi xác định các chức năng và đánh giá một phiên, nhưng tôi không thể nhận được giá trị đầu ra mà không có. Thay vào đó, tôi nhận được:
#+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:
Không có kết quả nào được trả về, dường như vì tất cả >>>các đầu ra không được phân tích cú pháp chính xác.
:results valueyêu cầu bạn sửa đổi mã python của mình bằng cách thêm mộtreturncâu lệnh rõ ràng hoặc bằng cách gán cho một biếnfoovà thêm:return foovào tiêu đề. Nhưng ngay cả với những sửa chữa đó, nó sẽ không hoạt động trong ipython - xem bình luận thứ hai của tôi cho câu trả lời của tôi dưới đây.