Yes, it's been covered, but not quite to my satisfaction.
Here's an example simple script:
# Very simple script
bar = 123
I save this as "foo.py" somewhere Python can find it
>>> import foo
>>> bar
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'bar' is not defined
# Oops, it's in a different namespace and I have to prefix EVERYTHING with
"foo.". This is inconvenient.
>>> foo.bar
123
Start a new session...
>>> from foo import *
>>> bar
123
Do a little editing:
# Very simple (new) script
bar = 456
Save as foo.py, back to the interpreter:
>>> reload(foo)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
# Oops, it's not in the namespace, so there is NO way to use reload
Start a new session...
>>> execfile('foo.py')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 2] No such file or directory: 'foo.py'
# Oops, it's on the path, but execfile can't find it
>>> import os,sys
>>> os.chdir('W:/Code')
>>> execfile('foo.py')
>>> bar
456
Do some more editing:
# Very simple (even newer) script
bar = 789
Save it as foo.py, back to the interpreter:
>>> execfile('foo.py')
>>> bar
789
That works, but nothing is very convenient for debugging simple scripts. If I
run the script from a command prompt it works, but I lose all my other stuff
(debugging functions, variables, etc.).
More a comment than a question but seems like sometimes execfile() is the right
tool.
Regards,
Allen
--
https://mail.python.org/mailman/listinfo/python-list