re-importing modules

kyosohma at gmail.com kyosohma at gmail.com
Mon Apr 30 17:18:40 EDT 2007


On Apr 30, 3:00 pm, Carsten Haese <cars... at uniqsys.com> wrote:
> On Mon, 2007-04-30 at 12:44 -0700, kyoso... at gmail.com wrote:
> > On Apr 30, 12:49 pm, "T. Crane" <tcr... at REMOVETHISuiuc.edu> wrote:
> > > Hi,
>
> > > When troubleshooting code that's saved in a text file, I often find that I
> > > want to make a change to it, re-save it, then reimport it.  However, just
> > > typing
>
> > > import myTestCode
>
> > > doesn't always seem to import the newer version.  Is it supposed to?  I find
> > > that right now I often have to close my iPython window, then reopen it and
> > > import my recently modified code.  I know this can't be the best way to do
> > > this, but I don't know what is.
>
> > > any suggestions/help welcome and appreciated,
> > > trevis
>
> > Hi,
>
> > Another person posted the same thing today. As with that person, you
> > probably need to use the reload() function. See this post for more
> > details:
>
> >http://www.python.org/search/hypermail/python-1993/0342.html
>
> > Mike
>
> In addition to the warning that reload() does not recursively reload
> modules that the reloaded module depends on, be warned that reloading a
> module does not magically affect any functions or objects from the old
> version that you may be holding on to. For example:
>
> Module code:
> # dog.py
> class dog(object):
>   def bark(self): print "Arf!"
>
> Interactive session:>>> import dog
> >>> d = dog.dog()
> >>> d.bark()
> Arf!
> >>> # Now the module code is being changed in another window...
> >>> reload(dog)
>
> <module 'dog' from 'dog.py'>>>> # A new dog instance will now say Woof:
> >>> d2 = dog.dog()
> >>> d2.bark()
> Woof!
> >>> # But the dog instance from before still says Arf:
> >>> d.bark()
>
> Arf!
>
> This may or may not be a problem for you, but the bottom-line is that
> reload must be used with caution.
>
> -Carsten

Carsten,

Very good point. I don't recall ever seeing that explained before.
Thanks!

Mike




More information about the Python-list mailing list