I tried reproducing this morning on a machine that is connected to
internet was unable to
but did get the behavior below that I do not understand.
created module named spam with this code.
def ello():
print "Your father smells of elderberrys"
Here is expert for interactive window to explain the issue: question
is below.
PythonWin 2.6 (r26:66721, Oct 2 2008, 11:35:03)
I
renamed ello to insult and re-imported.
>>> dir(spam)
[clip.. 'ello', 'insult']
ello still exist in namespace an runs ... not so strange
>>> spam.ello()
Your father smells of elderberrys
>>> del(spam)
delete spam and it no longer runs as expected.
modify insult to this:
def insult():
print "Your father smells of elderberrys/n and your mother was a
kiniggit"
Q.
on re-importing spam ello is back and continues to run. I did note
expect this to be the
case. Can someone explain what is happening?
>>> dir(spam)
[clip..., 'ello', 'insult']
>>> spam.ello()
Your father smells of elderberrys
>>> spam.insult()
Your father smells of elderberrys/n and your mother was a kiniggit
>>>
Thanks for your help.
Bill Sneddon
The reload() function might be what you need:
http://docs.python.org/library/functions.html#reload
HTH,
~Simon
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