How to clean python interpreter's environment?

Rafal Kleger-Rudomin r.kleger at chello.nl
Sat Aug 21 12:37:23 CEST 2004


Reinhold Birkenfeld wrote:
> Peter Hansen wrote:
> 
>>Reinhold Birkenfeld wrote:
>>
>>
>>>>Rafal Kleger-Rudomin wrote:
>>>>
>>>>
>>>>>I'm looking for a command to reset interpreter's environment i.e. unload 
>>>>>all modules, delete variables etc.
>>>
>>>What about something like this:
>>>
>>>def clear(keep=("__builtins__", "clear")):
>>>    keeps = {}
>>>    for name, value in globals().iteritems():
>>>        if name in keep: keeps[name] = value
>>>    globals().clear()
>>>    for name, value in keeps.iteritems():
>>>        globals()[name] = value
>>
>>Well, that only removes all the references from the
>>globals of the current module.  Is that all that's
>>wanted?
>>
>>Note that threads that are already running will not be
>>removed, nothing in sys.modules will be removed, and
>>there are doubtless a few other things in the interpreter
>>that aren't quite so easy to get at.
> 
> 
> Right. So I agree with you on ^D.

Well, Control-D just exits python, at least on cygwin. That's not what I 
want.

I should have explained the background of my question:
I write some Python app on Windows using PythonWin IDE. It has own 
Python interpreter window, when I run or debug my app, it runs in that 
interpreter environment. But, after the first run, the environment is 
polluted with modules, vars etc.
What I can do at this moment:
- Exit IDE and run again every time I run/debug my app.
- Run my app in external interpreter (but then I cannot debug with IDE)

Another thing:
Because of this 'cleaning problem', I write all my classes in the main 
file. I should put them in a module. But then I have to manually reload 
the module each time I edit it. Moreover, reload() also does not do the 
job perfectly. So a 'clean' command would be handy.

Do you know any developers' guide addressing such work practices, 
practical tricks, project organisation? I have a book 'Python 2.1 
Bible', it is cool but does not go so far.

Best Regards,
Rafal



More information about the Python-list mailing list