From mboxrd@z Thu Jan 1 00:00:00 1970 From: Darlan Cavalcante Moreira Subject: [Babel] Strange bug in org-babel with python Date: Tue, 10 Nov 2009 20:26:51 -0300 Message-ID: <4af9f6c1.0504c00a.3ba1.31cc@mx.google.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1N8075-0005q9-RK for emacs-orgmode@gnu.org; Tue, 10 Nov 2009 18:27:03 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N8070-0005hp-UC for emacs-orgmode@gnu.org; Tue, 10 Nov 2009 18:27:03 -0500 Received: from [199.232.76.173] (port=52004 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N8070-0005hg-QA for emacs-orgmode@gnu.org; Tue, 10 Nov 2009 18:26:58 -0500 Received: from mail-gx0-f224.google.com ([209.85.217.224]:35694) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1N8070-0002F1-H0 for emacs-orgmode@gnu.org; Tue, 10 Nov 2009 18:26:58 -0500 Received: by gxk24 with SMTP id 24so1502860gxk.6 for ; Tue, 10 Nov 2009 15:26:58 -0800 (PST) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: org-mode Mailinglist 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