I came up with a simpler description of the problem. It's all in the simple source:
# we define 'print b' in three different ways: as a string, # a bytecode and a function string="print b" code=compile(string,'string','exec') def function(): print b # now we make functions that test if it is possible to execute 'print b' # in some local scope def execstring(): b=5 exec string def execfunction(): b=5 exec function.func_code def execcode(): b=5 exec code execstring() # works execcode() # works execfunction() # throws name error exception... My problem is that both 'string' and 'code' are references to code objects, so they _should_ behave in the same way... I am close to giving up... I am trying to find a way of executing functions without creating a nested scope, so they can share local and global namespace (even if they are declared in some other module). I _could_ turn them into strings and pass around as compiled objects, butthis would be very ugly. I am sure Python has some better, cleaner way to do this. regards, Filip Dreger -- http://mail.python.org/mailman/listinfo/python-list