exec / execfile namespace problem

Gordon McMillan gmcm at hypernet.com
Sat Nov 6 20:58:57 EST 1999


Karan Vasudeva has problems with exec:

> .... my
> problem is, when i call my script from another script (by doing
> an exec, thats what i need to do, you see), the interpreter stops
> at httplib.py as it can't find that socket called self.sock .
> This appears to be a namespace issue. I just want to know how to
> do this right.

exec is pretty much only used when you don't know what 
you'll be running at the time you wrote it. If you know what 
you're running at the time you write it, there's no reason to use 
exec. You probably just want:

  import cool

and maybe:
  cool.main(args)

Many python scripts have the form:
-----------------
def main():
  # whatever

def otherthing():
  # stuff used by main, or usable by others

if __name__ == '__main__':
  main() # if invoked as a script, run main()
---------------------------------
 
Then they can run as the top level script, or they can be 
imported, and any functions, classes etc. used by the 
importer.



- Gordon




More information about the Python-list mailing list