Uwe Ziegenhagen Uwe Ziegenhagen - 9 months ago 33
Python Question

Emacs Org Mode: Executing simple python code

How can I execute very simple Python-Code in Emacs' Org Mode?

The first example works fine, however I can't make it give me the result of simplest computations:

; works
#+begin_src python
def foo(x):
if x>0:
return x+10

return x-1

return foo(50)

: 60

; does not work
#+begin_src python

: None

; does not work
#+begin_src python

: None

I set up Org Mode using the following lines:

;; enable python for in-buffer evaluation
'((python . t)))

;; all python code be safe
(defun my-org-confirm-babel-evaluate (lang body)
(not (string= lang "python")))
(setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)


There are two ways of getting the result of a source block - output and value. You mixed them up, hence the troubles.

First block is fine.

To fix the second block:

#+begin_src python :results value
return 1+1

To fix the third block:

#+begin_src python :results output
print 1+1

When output mode is value you must return. Just putting it there like you did with 1+1 won't do. In the third one you want the result to be printed output, but your default session setting is value(mine defaults to output btw).

And this bit about org-confirm-babel-evaluate is kind of irrelevant to the question. I just have it set to nil.