-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, I'm experiencing a weird problem with eval(), providing it a copy of the globals() dictionary.
The following code works: <snip> s = """ def func(level): if level < 2: func(level+1) func(0) """ c = compile(s, '<string>', 'exec') g = globals() #g = g.copy() l = locals() eval(c, g, l) </snip> But if I comment in the line "g = g.copy()" and run the same snippet again, I get the following error: Traceback (most recent call last): File "test.py", line 12, in ? eval(c, g, l) File "<string>", line 5, in ? File "<string>", line 4, in func NameError: global name 'func' is not defined Any ideas? Basically I'm trying to evaluate code with a specific global and local namespace. However, I cannot get this to work unless I use the exact global namespace as returned by globals(), any other mapping makes this code fail. Python version is 2.4.2 on Linux. Regards, Geert -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iQEVAwUBQ7RFwprPkVOV4lDgAQKK+Af/eEHbkHiUtH79trDsgvyTwY6xTayk+nB2 nHZL6iD0aRlDfLtccsP2OTLafJdNwb764vK6hqQFuvN2ol4v5SVwEnsJ4EvtwKyH iJcByEXZSrPjBsCejKPsoLCCCJ3q8UdkO4zsYsd+xSqCuJAYzfEnSf75yu6PY3Hh N7uzPT626BdUq5wHaWlbAKqtmCfN5kOodgkTE3s7/h9JlP4EeKyF4s5sCFQdJ0jw CWXr28gOMcWBvlVLOVSbeDq5/n5YWfaJKpbGYXolv5H9Cyxa4rZ1AMy628u1DnPa he7sX2T0pTNOaeVJGWanSR99jbq2VxDaiocQdpjUnEHqaUSY8YhFTw== =lbmj -----END PGP SIGNATURE----- -- http://mail.python.org/mailman/listinfo/python-list