From 88c8a899b0db2cb3d0da4ab376d6b1f215ac5398 Mon Sep 17 00:00:00 2001 From: Bingsu Date: Fri, 5 May 2023 16:07:05 +0900 Subject: [PATCH] fix: trace controlnet import error --- CHANGELOG.md | 3 +++ adetailer/__version__.py | 2 +- controlnet_ext/controlnet_ext.py | 14 +++++--------- scripts/!adetailer.py | 12 +++++++++--- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 695a36e..cdb1c3d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ - scripts_args를 딥카피함 - postprocess_image를 약간 분리함 +- v23.5.6.post0 +- `init_controlnet_ext`에서 에러메세지를 자세히 볼 수 있음 + ### 2023-05-04 - v23.5.4 diff --git a/adetailer/__version__.py b/adetailer/__version__.py index 278441e..1b53b21 100644 --- a/adetailer/__version__.py +++ b/adetailer/__version__.py @@ -1 +1 @@ -__version__ = "23.5.6" +__version__ = "23.5.6.post0" diff --git a/controlnet_ext/controlnet_ext.py b/controlnet_ext/controlnet_ext.py index 3bb4d63..22ec198 100644 --- a/controlnet_ext/controlnet_ext.py +++ b/controlnet_ext/controlnet_ext.py @@ -34,20 +34,16 @@ class ControlNetExt: self.cn_available = False self.external_cn = None - def init_controlnet(self) -> bool: + def init_controlnet(self): if is_in_builtin: import_path = "extensions-builtin.sd-webui-controlnet.scripts.external_code" else: import_path = "extensions.sd-webui-controlnet.scripts.external_code" - try: - self.external_cn = importlib.import_module(import_path, "external_code") - self.cn_available = True - models = self.external_cn.get_models() - self.cn_models.extend(m for m in models if "inpaint" in m) - return True - except ImportError: - return False + self.external_cn = importlib.import_module(import_path, "external_code") + self.cn_available = True + models = self.external_cn.get_models() + self.cn_models.extend(m for m in models if "inpaint" in m) def _update_scripts_args(self, p, model: str, weight: float): cn_units = [ diff --git a/scripts/!adetailer.py b/scripts/!adetailer.py index 9ada82c..1827090 100644 --- a/scripts/!adetailer.py +++ b/scripts/!adetailer.py @@ -2,6 +2,7 @@ from __future__ import annotations import platform import sys +import traceback from copy import copy, deepcopy from itertools import zip_longest from pathlib import Path @@ -253,9 +254,14 @@ class AfterDetailerScript(scripts.Script): def init_controlnet_ext(self): if self.controlnet_ext is None: self.controlnet_ext = ControlNetExt() - success = self.controlnet_ext.init_controlnet() - if not success: - print("[-] ADetailer: ControlNetExt init failed.", file=sys.stderr) + try: + self.controlnet_ext.init_controlnet() + except ImportError: + error = traceback.format_exc() + print( + f"[-] ADetailer: ControlNetExt init failed:\n{error}", + file=sys.stderr, + ) def is_ad_enabled(self, args: ADetailerArgs): return args.ad_enable is True and args.ad_model != "None"