def _run(self):
        self.create_directories()
        self.plat_prepare()
        self.fixup_distribution()

        dist = self.distribution

        # all of these contain module names
        required_modules = []
        for target in dist.com_server + dist.service + dist.ctypes_com_server:
            required_modules.extend(target.modules)
        # and these contains file names
        required_files = [target.script
                          for target in dist.windows + dist.console]

        mf = self.create_modulefinder()

        # These are the name of a script, but used as a module!
        for f in dist.isapi:
            mf.load_file(f.script)

        if self.typelibs:
            print "*** generate typelib stubs ***"
            from distutils.dir_util import mkpath
            genpy_temp = os.path.join(self.temp_dir, "win32com", "gen_py")
            mkpath(genpy_temp)
            num_stubs = collect_win32com_genpy(genpy_temp,
                                               self.typelibs,
                                               verbose=self.verbose,
                                               dry_run=self.dry_run)
            print "collected %d stubs from %d type libraries" \
                  % (num_stubs, len(self.typelibs))
            mf.load_package("win32com.gen_py", genpy_temp)
            self.packages.append("win32com.gen_py")

        # monkey patching the compile builtin.
        # The idea is to include the filename in the error message
        orig_compile = compile
        import __builtin__
        def my_compile(source, filename, *args):
            try:
                result = orig_compile(source, filename, *args)
            except Exception, details:
                raise DistutilsError, "compiling '%s' failed\n    %s: %s" % \
                      (filename, details.__class__.__name__, details)
            return result
        __builtin__.compile = my_compile

        print "*** searching for required modules ***"
        self.find_needed_modules(mf, required_files, required_modules)

        print "*** parsing results ***"
        py_files, extensions, builtins = self.parse_mf_results(mf)

        if self.xref:
            mf.create_xref()

        print "*** finding dlls needed ***"
        dlls = self.find_dlls(extensions)
        self.plat_finalize(mf.modules, py_files, extensions, dlls)
        dlls = [item for item in dlls
                if os.path.basename(item).lower() not in self.dll_excludes]
        # should we filter self.other_depends in the same way?

        print "*** create binaries ***"
        self.create_binaries(py_files, extensions, dlls)

        self.fix_badmodules(mf)

        if mf.any_missing():
            print "The following modules appear to be missing"
            print mf.any_missing()

        if self.other_depends:
            print
            print "*** binary dependencies ***"
            print "Your executable(s) also depend on these dlls which are not included,"
            print "you may or may not need to distribute them."
            print
            print "Make sure you have the license if you distribute any of them, and"
            print "make sure you don't distribute files belonging to the operating system."
            print
            for fnm in self.other_depends:
                print "  ", os.path.basename(fnm), "-", fnm.strip()
dataset/ETHPy150Open fogleman/FeedNotifier/patch/build_exe.py/py2exe._run/original