From: Mark M. <Mar...@ds...> - 2004-10-25 20:16:54
|
As a matter of interest, the problem I was talking about is as follows (but note I resolved my problem): Jython 2.1 on java1.4.1_02 (JIT: null) Type "copyright", "credits" or "license" for more information. >>> from org.python.util import InteractiveConsole as IC >>> IC1 = IC() >>> IC1.interact() Jython 2.1 on java1.4.1_02 (JIT: null) >>> import time >>> dir() ['__doc__', '__name__', 'time'] >>> ^Z >>> IC2 = IC() >>> IC2.interact() Jython 2.1 on java1.4.1_02 (JIT: null) >>> dir() ['__doc__', '__name__'] >>> import sys >>> sys.modules {'__main__': <module __main__ at 9788212>, 'java.lang': <java package java.lang at 26654547>, '_sre': <jclass org.python.modules._sre at 31304962>, 'sre': <module sre at 9016474>, 'org': <java package org at 8075231>, 'strop': None, 'string': <module string at 26290774>, '__builtin__': <module __builtin__ at 24291903>, 'javaos': <module j avaos at 17247120>, 'sre_constants': <module sre_constants at 29165247>, 'javapath': <module javapath at 17175193>, 'sys': sys module, 'java.io': <java package java.io at 28252437>, 'sre_compile': <module sre_compile at 9942961>, 're': <module re at 10276870>, 'sre_parse': <module sre_parse at 18707897>, 'exceptions': <jclass org.python.c ore.exceptions at 18610053>, 'thread': <jclass org.python.modules.thread at 18304709>, 'copy_reg': <module copy_reg at 20211730>, 'org.python.util': <java package org.pyt hon.util at 27035333>, 'java': <java package java at 22293724>, 'org.python': <java package org.python at 21840659>, 'sitecustomize': None, 'os': <jclass org.python.modul es.os at 24027487>, 'UserDict': <module UserDict at 2389016>, 'site': <module site at 21094410>, 'types': <jclass org.python.modules.types at 31174955>, 'time': <jclass o rg.python.modules.time at 5014562>} >>> Notice how 'time' is still in sys.modules in IC2. This was causing me problems for a script I had imported that was keeping a reference to an old, stale object. Thanks for the reply, Mark. "Updike, Clark" <Cla...@jh...> wrote on 25/10/2004 02:50:51 PM: > I'm not able to reproduce your problem: > > Jython 2.1 on java1.3.1_01 (JIT: null) > Type "copyright", "credits" or "license" for more information. > >>> from org.python.util import InteractiveConsole as IC > >>> ic1 = IC() > >>> ic1.interact() > Jython 2.1 on java1.3.1_01 (JIT: null) > >>> import time > >>> dir() > ['__doc__', '__name__', 'time'] > >>> ^Z > > >>> ic2 = IC() > >>> ic2.interact() > Jython 2.1 on java1.3.1_01 (JIT: null) > >>> dir() > ['__doc__', '__name__'] > >>> > > Notice dir() on ic2 does not show the time module that was imported in > ic1. > > What happens when you follow this example importing your 'crap'? > > -Clark > > -----Original Message----- > From: On Behalf Of Mark Melvin > Sent: Monday, October 25, 2004 1:40 PM > To: jyt...@li... > Subject: RE: [Jython-users] How to "cleanse" sys.modules between > sessions > > Hmm... that is what I am doing, but it seems the sys module is not being > created as new. > Weird. I guess I'll dig into the source. I imagine that will explain > things. > > Thanks, > Mark. > > "Jeff Emanuel" <JEm...@lg...> wrote on 25/10/2004 12:09:20 PM: > > > The only document is the source code. > > > > You should create a new interpreter for each console > > and each interpreter should have its own, new sys > > module (PySystemState). The PySystemState constructor creates a new, > > empty modules dictionary. > > > > -----Original Message----- > > From: jyt...@li... > > [mailto:jyt...@li...] On Behalf Of Mark > > Melvin > > Sent: Monday, October 25, 2004 9:52 AM > > To: Greg Knaddison > > Cc: jyt...@li...; > > jyt...@li... > > Subject: Re: [Jython-users] How to "cleanse" sys.modules between > > sessions > > > > I don't think it is a GC issue. If I type "dir()" in the new console, > > > it appears clean. There is no module named "crap" in the global > > namespace. However, if I look at sys.modules, "crap" is still present. > > > I can try a GC, but I don't think it will help. It looks like a > > global Jython state issue to me. Is there a document somewhere > > describing what all of the various initialize methods do? > > (PythonInterpreter.initialize(), Py.setSystemState(), > > PySystemState.initialize()). There are no descriptions in any of the > > Javadoc stuff, and they don't appear to do anything when I call them. > > > Or a doc on lifecycle and the proper way to init and use a Jython > > interpreter from a Java program would be nice. > > > > Thanks, > > > > Mark. > > > > > > jyt...@li... wrote on 24/10/2004 10:55:17 > > PM: > > > > > On Sun, 24 Oct 2004 16:27:54 -0400, Mark Melvin > > > <mar...@ds...> wrote: > > > > I am using Jython from a Java program and instantiate an > > InteractiveConsole > > > > to work with a GUI application. The first time I instantiate the > > console, I > > > > import a module called "crap" for argument's sake. I later trash > > the > > > > console, and fire up another one. The problem is - "crap" is > > > > still > > hanging > > > > around and is available (although somewhat stale..) in the new > > console. |