Cashing in PythonWin name space?... seems unexpected to me
davea at ieee.org
Thu Oct 8 20:12:15 CEST 2009
> 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.
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:
More information about the Python-list