Ciao, sto cercando di realizzare un applicativo che legga delle stringhe di testo e le interpreti come codice Python. Trascurando [per il momento] le eventuali implicazioni di security, il codice che ho scritto e` il seguente:
import new import sys ### main = """ import math for x in xrange(5): print x print 'main done' """ helper = """ import main for i in xrange(5): print math.sin(i) print 'helper done' """ ### filesparsedNames = ['main', 'helper'] def moduleimporter(name): mod = new.module(name) try: exec eval(name) in mod.__dict__ except Exception, e: print("Exception %s while trying to evaluate module %s" % (e, eval(name))) moduleimporter(filesparsedNames[0]) moduleimporter(filesparsedNames[1]) Il codice funziona perfettamente nell'interpretare la prima stringa, ovvero il main, mentre nel secondo caso non funziona riportando quest'errore: {'e': NameError("name 'math' is not defined",), 'name': 'helper', 'mod': <module 'helper' (built-in)>} A cosa puo` essere dovuto? Penso che sia un problema di locals() e globals(), ma prima vorrei sentire anche un vostro parere. Grazie! Michele _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python