Hello org-users,
Today I was bitten by a weird behavior when executing some python
blocks with org-babel that really confused me, but after some trying
and error I was able to isolate the problem.
When a block has an import statement such as
,----
| from some_module import *
`----
it works with :results output, but not with :results value.
The content of simple file to reproduce the problem is showed below
--------------- Cut here -----------------------------------
* Test Org-babel
#+begin_src python :tangle test :results silent
def double_input(a):
return a*2
#+end_src
#+begin_src python :results value
import test
def times_four(a):
return test.double_input(a)*2
if __name__ == '__main__':
print "Value is %s" % times_four(10)
times_four(10)
#+end_src
#+begin_src python :results value
from test import *
def times_four(a):
return double_input(a)*2
if __name__ == '__main__':
print "Value is %s" % times_four(10)
times_four(10)
#+end_src
--------------- End of cut ---------------------------------
To reproduce the problem, tangle the file to create test.py from the
first block. Then executing the second block (which has no import *)
works with either :results output or :results value.
However, the third block, (which uses import *) only works if executed
with :results output. I can't see the reason for this since the code
is right and works in a python buffer as expected.
- Darlan
_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-orgmode