On Fri, Feb 16, 2018 at 3:18 PM, windhorn <aewindh...@gmail.com> wrote: > 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
You didn't need to start a new session here. "from foo import *" works just as well in the existing session. > 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 Sure there is. py> import foo # Get the module to reload py> reload(foo) # Reload it py> from foo import * # Update all the names previously *-imported > 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 execfile doesn't use the path; that's not what it's meant for. -- https://mail.python.org/mailman/listinfo/python-list