diff --git a/autogpt/plugins/__init__.py b/autogpt/plugins/__init__.py index 69af98a6..af721faf 100644 --- a/autogpt/plugins/__init__.py +++ b/autogpt/plugins/__init__.py @@ -230,7 +230,11 @@ def scan_plugins(config: Config, debug: bool = False) -> List[AutoGPTPluginTempl plugin_module_name = plugin_module_path[-1] qualified_module_name = ".".join(plugin_module_path) - __import__(qualified_module_name) + try: + __import__(qualified_module_name) + except: + logger.error(f"Failed to load {qualified_module_name}") + continue plugin = sys.modules[qualified_module_name] if not plugins_config.is_enabled(plugin_module_name): @@ -254,7 +258,10 @@ def scan_plugins(config: Config, debug: bool = False) -> List[AutoGPTPluginTempl module = Path(module) logger.debug(f"Zipped Plugin: {plugin}, Module: {module}") zipped_package = zipimporter(str(plugin)) - zipped_module = zipped_package.load_module(str(module.parent)) + try: + zipped_module = zipped_package.load_module(str(module.parent)) + except: + logger.error(f"Failed to load {str(module.parent)}") for key in dir(zipped_module): if key.startswith("__"): @@ -287,9 +294,11 @@ def scan_plugins(config: Config, debug: bool = False) -> List[AutoGPTPluginTempl f"Zipped plugins should use the class name ({plugin_name}) as the key." ) else: - if a_module.__name__ != "AutoGPTPluginTemplate": + if ( + module_name := getattr(a_module, "__name__", str(a_module)) + ) != "AutoGPTPluginTemplate": logger.debug( - f"Skipping '{key}' because it doesn't subclass AutoGPTPluginTemplate." + f"Skipping '{module_name}' because it doesn't subclass AutoGPTPluginTemplate." ) # OpenAI plugins