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
else:
return x-1
return foo(50)
#+end_src
#+RESULTS:
: 60
; does not work
#+begin_src python
1+1
#+end_src
#+RESULTS:
: None
; does not work
#+begin_src python
print(1+1)
#+end_src
#+RESULTS:
: None
I set up Org Mode using the following lines:
;; enable python for in-buffer evaluation
(org-babel-do-load-languages
'org-babel-load-languages
'((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
#+end_src
To fix the third block:
#+begin_src python :results output
print 1+1
#+end_src
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
.