En Fri, 19 Mar 2010 14:09:09 -0300, Peter Peyman Puk <peter_peyman_...@yahoo.ca> escribió:

I am running a simulator written in python. The simulator has a small TextView (actually a SourceView) widget which lets the user writes scripts, and when they are satisfied they can execute that script to get results. For arguments sake, we write a simple script and save it as A.py and we import it and execute it more or less like so.

import A

#assume there is a function called test() in module A
A.test()


Then the user modifies the contents of A.py and saves it again (to A.py) now all we have to do is the following

if 'A' in dir():
  reload(A)
else:
  import A

A.test()

Terry Reedy already gave you an answer for this import problem.
I'd like to go one step back and question whether using import/modules is the right thing here. Clearly A.py is not a module but a script (that's the word you used) - and one does not *import* a script but *executes* it. That is, instead of using import/__import__, use exec (or execfile) within a known namespace:

import __builtin__
ns = {'__builtins__': __builtin__.__dict__}
exec contents_of_textview in ns
# any change made to ns is visible here

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to