Cashing in PythonWin name space?... seems unexpected to me
w.g.sneddon at gmail.com
w.g.sneddon at gmail.com
Thu Oct 8 16:27:22 EDT 2009
On Oct 8, 2:12 pm, Dave Angel <da... at ieee.org> wrote:
> 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
Thanks I have looked at reload now. It seem pythonWin tries to use
reload
when doing an import. I think I need to do a little more reading on
PythonWin.
Bill
More information about the Python-list
mailing list