From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Dokos Subject: Re: python sessions Date: Tue, 19 Mar 2013 23:07:19 -0400 Message-ID: <16146.1363748839@alphaville> References: Reply-To: nicholas.dokos@hp.com Return-path: Received: from eggs.gnu.org ([208.118.235.92]:34693) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UI9N6-0007EH-Jh for emacs-orgmode@gnu.org; Tue, 19 Mar 2013 23:07:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UI9N4-0004ju-U1 for emacs-orgmode@gnu.org; Tue, 19 Mar 2013 23:07:24 -0400 Received: from g4t0017.houston.hp.com ([15.201.24.20]:18353) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UI9N4-0004jj-N5 for emacs-orgmode@gnu.org; Tue, 19 Mar 2013 23:07:22 -0400 In-Reply-To: Message from John Hendy of "Tue, 19 Mar 2013 19:04:13 CDT." List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: John Hendy Cc: Orgmode Mailing List , Gary Oberbrunner John Hendy wrote: > On Tue, Mar 19, 2013 at 4:40 PM, Gary Oberbrunner wrote: > > I must be failing to understand something. I'm running Emacs 24.3 on > > Windows, with latest trunk org-mode. I can't get python functions to > > persist across blocks in session mode. Here's my foo.org: > > > > =============== > > > > * My Document > > #+BEGIN_SRC python :exports results :results output :session > > def foo(x): > > return x+1 > > print "hi" > > #+END_SRC > > > > #+RESULTS: > > : hi > > > > #+BEGIN_SRC python :exports results :results output :session > > print foo(100) > > print "bye" > > #+END_SRC > > > > ======================== > > > > In session mode, shouldn't foo be defined in the second python block? When > > I export this, I get "NameError: name 'foo' is not defined" > > > > I may be doing something wrong, because if I name my python session, I never > > see a buffer of that name, and I expected to. Any help? > > > > -- > > Gary > > You should probably post your babel configuration from .emacs. This > works for me (mostly). I'm using python 3.3 and so the print function > has changed to requiring parentheses. I can switch to a buffer called > *Python*, however, and =print("hi")= works fine. > > If I change to =print(foo(100))=, I get 101 in the #+RESULTS block. > I don't - I get the same error as Gary. And looking at the code of org-babel-python-initiate-session-by-key, I don't understand how it's supposed to work: python-buffer is nil to begin with; the cond takes the first branch and starts a python session. When we come to (setq org-babel-python-buffers (cons (cons session python-buffer) (assq-delete-all session org-babel-python-buffers))) python-buffer is still nil, so we are cooked. Maybe python-buffer was set as a side-effect of run-python in earlier versions of emacs? If so, it does not seem to be the case now. Nick Org-mode version 8.0-pre (release_8.0-pre-144-g855dcf.dirty @ /home/nick/elisp/org-mode/lisp/) GNU Emacs 24.3.50.2 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.4) of 2012-12-29 on alphaville