def toplevel_modules(path): for root, dirs, files in os.walk(path): names = itertools.chain(dirs, (os.path.splitext(i)[0] for i in files)) for name in names: if importable(name): yield name break
if __name__ == '__main__': words = set(keyword.kwlist)
words.update(dir(__builtins__)) for i in dir(__builtins__): words.update(dir(getattr(__builtins__, i)))
stdout = sys.stdout for path in sys.path: words.update(i for i in toplevel_modules(path)) sys.stdout = stdout