Using import in an exec'ed string

Gordon McMillan gmcm at hypernet.com
Sun Aug 5 07:43:26 EDT 2001


Boudewijn Rempt wrote:

> I'm wondering why, if I give a customized globals
> and locals parameter to exec, import doesn't work
> anymore (that is, it doesn't anything to the namespace.):

 
> a="""
> import string
> 
> def f():
>      print string.split("aaa aaa")
> 
> f()"""
> 
> exec(a)

[works]

> exec(a, {}, {})

[fails - NameError on string inside f]

Nothing to do with import. This fails too:

a = """
x = 3
def f():
  print x
f()
"""
exec(a, {}, {})

But, this works:
d = {}
exec(a, d, d)

- Gordon





More information about the Python-list mailing list