コード例 #1
0
    def load_module(self, name):
        # If there is an existing module object named 'fullname' in
        # sys.modules, the loader must use that existing module. (Otherwise,
        # the reload() builtin will not work correctly.)
        if name in sys.modules:
            return sys.modules[name]

        co, pyc = self.modules.pop(name)
        # I wish I could just call imp.load_compiled here, but __file__ has to
        # be set properly. In Python 3.2+, this all would be handled correctly
        # by load_compiled.
        mod = sys.modules[name] = imp.new_module(name)
        try:
            mod.__file__ = co.co_filename
            # Normally, this attribute is 3.2+.
            mod.__cached__ = pyc
            mod.__loader__ = self
            # Normally, this attribute is 3.4+
            mod.__spec__ = spec_from_file_location(name,
                                                   co.co_filename,
                                                   loader=self)
            six.exec_(co, mod.__dict__)
        except:  # noqa
            if name in sys.modules:
                del sys.modules[name]
            raise
        return sys.modules[name]
コード例 #2
0
ファイル: rewrite.py プロジェクト: lmregus/Portfolio
 def load_module(self, name):
     co, pyc = self.modules.pop(name)
     if name in sys.modules:
         # If there is an existing module object named 'fullname' in
         # sys.modules, the loader must use that existing module. (Otherwise,
         # the reload() builtin will not work correctly.)
         mod = sys.modules[name]
     else:
         # I wish I could just call imp.load_compiled here, but __file__ has to
         # be set properly. In Python 3.2+, this all would be handled correctly
         # by load_compiled.
         mod = sys.modules[name] = imp.new_module(name)
     try:
         mod.__file__ = co.co_filename
         # Normally, this attribute is 3.2+.
         mod.__cached__ = pyc
         mod.__loader__ = self
         # Normally, this attribute is 3.4+
         mod.__spec__ = spec_from_file_location(name, co.co_filename, loader=self)
         six.exec_(co, mod.__dict__)
     except:  # noqa
         if name in sys.modules:
             del sys.modules[name]
         raise
     return sys.modules[name]