def load_ems(self, modules_paths: List[str]):
        """
        Load all extraction modules from the path

        Args:
            modules_path: str

        Returns:

        """
        all_em_lst = []
        if modules_paths:
            for modules_path in modules_paths:
                em_lst = []
                try:
                    for file_name in os.listdir(modules_path):
                        if file_name.startswith("em_") and file_name.endswith(".py"):
                            sys.path.append(modules_path)  # append module dir path
                            this_module = importlib.import_module(file_name[:-3])
                            for em in self.classes_in_module(this_module):
                                em_lst.append(em(self))
                except:
                    self.log("Error when loading etk modules from " + modules_path, "error")
                    raise NotGetETKModuleError("Wrong file path for ETK modules")
                all_em_lst += em_lst

        try:
            all_em_lst = self.topological_sort(all_em_lst)
        except Exception:
            self.log("Topological sort for ETK modules fails", "error")
            raise NotGetETKModuleError("Topological sort for ETK modules fails")

        # if not all_em_lst:
        #     self.log("No ETK module in " + str(modules_paths), "error")
        #     raise NotGetETKModuleError("No ETK module in dir, module file should start with em_, end with .py")
        return all_em_lst
Load all extraction modules from the path

        Args:
            modules_path: str

        Returns: