python refresh/reload

womble picture womble · Oct 4, 2009 · Viewed 95.9k times · Source

This is a very basic question - but I haven't been able to find an answer by searching online.

I am using python to control ArcGIS, and I have a simple python script, that calls some pre-written code.

However, when I make a change to the pre-written code, it does not appear to result in any change. I import this module, and have tried refreshing it, but nothing happens.

I've even moved the file it calls to another location, and the script still works fine. One thing I did yesterday was I added the folder where all my python files are to the sys path (using sys.append('path') ), and I wonder if that made a difference.

Thanks in advance, and sorry for the sloppy terminology.

Answer

Lennart Regebro picture Lennart Regebro · Oct 4, 2009

It's unclear what you mean with "refresh", but the normal behavior of Python is that you need to restart the software for it to take a new look on a Python module and reread it.

If your changes isn't taken care of even after restart, then this is due to one of two errors:

  1. The timestamp on the pyc-file is incorrect and some time in the future.
  2. You are actually editing the wrong file.

You can with reload re-read a file even without restarting the software with the reload() command. Note that any variable pointing to anything in the module will need to get reimported after the reload. Something like this:

import themodule
from themodule import AClass

reload(themodule)
from themodule import AClass