Пример #1
0
 def load_module(self, fullname):
     if sys.modules.has_key(fullname):
         mod = sys.modules[fullname]
         if _memimporter.get_verbose_flag():
             sys.stderr.write("import %s # previously loaded from zipfile %s\n" % (fullname, self.archive))
         return mod
     _memimporter.set_find_proc(self.locate_dll_image)
     try:
         return zipimport.zipimporter.load_module(self, fullname)
     except zipimport.ZipImportError:
         pass
     initname = "init" + fullname.split(".")[-1] # name of initfunction
     filename = fullname.replace(".", "\\")
     if filename in ("pywintypes", "pythoncom"):
         filename = filename + "%d%d" % sys.version_info[:2]
         suffixes = ('.dll',)
     else:
         suffixes = self._suffixes
     for s in suffixes:
         path = filename + s
         if path in self._files:
             if _memimporter.get_verbose_flag():
                 sys.stderr.write("# found %s in zipfile %s\n" % (path, self.archive))
             code = self.get_data(path)
             mod = _memimporter.import_module(code, initname, fullname, path)
             mod.__file__ = "%s\\%s" % (self.archive, path)
             mod.__loader__ = self
             if _memimporter.get_verbose_flag():
                 sys.stderr.write("import %s # loaded from zipfile %s\n" % (fullname, mod.__file__))
             return mod
     raise zipimport.ZipImportError, "can't find module %s" % fullname
Пример #2
0
        def create_module(self, spec):
            mod =  super().create_module(spec)
            if mod is None:
                verbose = _memimporter.get_verbose_flag()
                fullname = spec.name

                filename = fullname.replace(".", "\\")
                suffixes = self._suffixes
                initname = "PyInit_" + fullname.split(".")[-1]

                for s in suffixes:
                    path = filename + s
                    if path in self._files:
                        if verbose > 1:
                            sys.stderr.write("# found %s in zipfile %s\n"
                                            % (path, self.archive))
                        mod = _memimporter.import_module(fullname, path,
                                                        initname,
                                                        self.get_data, spec)
                        mod.__file__ = "%s\\%s" % (self.archive, path)
                        mod.__loader__ = self
                        mod.__memimported__ = True
                        if verbose:
                            sys.stderr.write("import %s # loaded from zipfile %s\n"
                                            % (fullname, mod.__file__))
                        return mod
Пример #3
0
 def load_module(self, fullname):
     verbose = _memimporter.get_verbose_flag()
     if fullname in sys.modules:
         mod = sys.modules[fullname]
         if verbose:
             sys.stderr.write("import %s # previously loaded from zipfile %s\n" % (fullname, self.archive))
         return mod
     try:
         return zipimport.zipimporter.load_module(self, fullname)
     except zipimport.ZipImportError:
         pass
     if sys.version_info >= (3, 0):
         # name of initfunction
         initname = "PyInit_" + fullname.split(".")[-1]
     else:
         # name of initfunction
         initname = "init" + fullname.split(".")[-1]
     filename = fullname.replace(".", "\\")
     if filename in ("pywintypes", "pythoncom"):
         filename = filename + "%d%d" % sys.version_info[:2]
         suffixes = (".dll",)
     else:
         suffixes = self._suffixes
     for s in suffixes:
         path = filename + s
         if path in self._files:
             if verbose > 1:
                 sys.stderr.write("# found %s in zipfile %s\n" % (path, self.archive))
             mod = _memimporter.import_module(fullname, path, initname, self.get_data)
             mod.__file__ = "%s\\%s" % (self.archive, path)
             mod.__loader__ = self
             if verbose:
                 sys.stderr.write("import %s # loaded from zipfile %s\n" % (fullname, mod.__file__))
             return mod
     raise zipimport.ZipImportError("can't find module %s" % fullname)
Пример #4
0
    def load_module(self, fullname):
        verbose = _memimporter.get_verbose_flag()

        if fullname in sys.modules:
            mod = sys.modules[fullname]
            if verbose:
                sys.stderr.write(
                    "import %s # previously loaded from zipfile %s\n"
                    % (fullname, self.archive))
            return mod
        try:
            return zipimport.zipimporter.load_module(self, fullname)
        except ImportError as err:
            if verbose:
                sys.stderr.write("error loading %s: %s\n"% (fullname, err))

            if sys.version_info >= (3, 0):
                # name of initfunction
                initname = "PyInit_" + fullname.split(".")[-1]
            else:
                # name of initfunction
                initname = "init" + fullname.split(".")[-1]
            filename = fullname.replace(".", "\\")
            if filename in ("pywintypes", "pythoncom"):
                filename = filename + "%d%d" % sys.version_info[:2]
                suffixes = ('.dll',)
            else:
                suffixes = self._suffixes
            for s in suffixes:
                path = filename + s
                if path in self._files:
                    if verbose > 1:
                        sys.stderr.write("# found %s in zipfile %s\n"
                                         % (path, self.archive))
                    spec = importlib.util.find_spec(fullname, path)
                    mod = _memimporter.import_module(fullname, path,
                                                     initname,
                                                     self.get_data, spec)
                    mod.__file__ = "%s\\%s" % (self.archive, path)
                    mod.__loader__ = self
                    mod.__memimported__ = True
                    sys.modules[fullname] = mod
                    if verbose:
                        sys.stderr.write("import %s # loaded from zipfile %s\n"
                                         % (fullname, mod.__file__))
                    return mod
            raise zipimport.ZipImportError("can't find module %s" % fullname) from err