Cashing in PythonWin name space?... seems unexpected to me

Dave Angel davea at ieee.org
Thu Oct 8 20:12:15 CEST 2009


bsneddon wrote:
> I saw an issue  on winXP  box not connected to internet yesterday,
> where i was running
> a script in the interactive window on PythonWin .   I would modify the
> script save and
> import and was still running the old version.  I did that several
> times with same result.
> I even renamed the function and it showed up but ran the old script.
> Very strange.
> <snip>
>   
>
Caching (not cashing) doesn't come into play here.  Objects are kept as 
long as there is a reference to them somewhere.  So renamed functions 
can still exist under their old name, since nobody has reused the name 
for something newer.

I'm not familiar with PythonWin.  But if it's like the standard python 
interpreter, where you use import at the command line to load a module, 
then I can comment on it.

Doing a second import on the same module will not look at the disk file 
at all.  To get it to re-read the source code, you need reload().  And 
reload() doesn't really do everything you'd expect.  In some cases it 
cannot (for example, references to external DLL's).  So there are 
frequently remnants of the earlier version of things lying around.

If this is really an interpreter environment, I'd exit the environment 
and start it again.   If it's more like a GUI (like Komodo, which I 
use), then the gui will kill the old interpreter and start another one 
when you say "exit" and "run".   Then you have nothing left of the old 
version of the module, and can start from scratch.

As Simon said, you should read about reload(), and its caveats:
   http://docs.python.org/library/functions.html#reload

 

DaveA




More information about the Python-list mailing list