#We must redefine it in Py3k if it's not already there def execfile(file, glob=None, loc=None): if glob is None: import sys glob = sys._getframe().f_back.f_globals if loc is None: loc = glob # It seems that the best way is using tokenize.open(): http://code.activestate.com/lists/python-dev/131251/ import tokenize stream = tokenize.open(file) # @UndefinedVariable try: contents = stream.read() finally: stream.close() #execute the script (note: it's important to compile first to have the filename set in debug mode) exec(compile(contents+"\n", file, 'exec'), glob, loc)