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 --classic
cờ 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 --classic
mộ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 --classic
vì 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 value
yêu cầu bạn sửa đổi mã python của mình bằng cách thêm mộtreturn
câu lệnh rõ ràng hoặc bằng cách gán cho một biếnfoo
và thêm:return foo
và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.