Gracefully handle plugin loading failure (#4994)

Co-authored-by: Reinier van der Leer <github@pwuts.nl>
This commit is contained in:
eyalk11
2023-07-22 08:42:41 +03:00
committed by GitHub
parent 669e66a1e7
commit 295473551f

View File

@@ -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