![見出し画像](https://assets.st-note.com/production/uploads/images/161457587/rectangle_large_type_2_458568bf0543eccba39c4a37cc2f9f91.png?width=1200)
reforgeにWD14導入したときのエラー対処
LoRAしようと色々準備タグ付けできる環境も必須だろうとWD14のインストールをすると恒例のようにエラーで起動しない。
色んな環境があり、仕方ないのかもしれないけど何をするにもエラー対処が必要で本当にハードルが高い遊びだな。。と思う。
WD14のインストールは簡単です。
WebUIのExtensionsタブからinstall from URLから導入するだけ。
restartUIするとポコポコとエラー
今回の対処スクリプト本体を変更しますので不安な方は、変更前に対象ファイルを別名で保存しておきましょう。
エラー1つめ
ImportError: cannot import name 'wrap_gradio_gpu_call' from 'webui'
変更対象ファイル
stable-diffusion-webui\extensions\stable-diffusion-webui-wd14-tagger\tagger\ui.py
変更箇所
★変更前
from webui import wrap_gradio_gpu_call
★変更後
from modules.call_queue import wrap_gradio_gpu_call
コピペで書き換えてください。(手打ちはミスするだけ)
元ネタ
多分これだけではダメだけどrestartUIします。
するとまたエラー
エラー2つめ
AttributeError: 'Namespace' object has no attribute 'deepdanbooru_projects_path'
変更対象ファイル
stable-diffusion-webui-reForge\extensions\stable-diffusion-webui-wd14-tagger\preload.py
変更箇所
★変更前
from modules.shared import models_path
★変更後
import argparse
import os
modules_path = os.path.dirname(os.path.realpath(__file__))
parser_pre = argparse.ArgumentParser(add_help=False)
parser_pre.add_argument("--data-dir", type=str, default=os.path.dirname(modules_path), help="base path where all user data is stored", )
cmd_opts_pre = parser_pre.parse_known_args()[0]
data_path = cmd_opts_pre.data_dir
models_path = os.path.join(data_path, "models")
コピペで書き換えてください。(手打ちはミスするだけ)
変更後のpreload.py
from pathlib import Path
from argparse import ArgumentParser
import argparse
import os
modules_path = os.path.dirname(os.path.realpath(__file__))
parser_pre = argparse.ArgumentParser(add_help=False)
parser_pre.add_argument("--data-dir", type=str, default=os.path.dirname(modules_path), help="base path where all user data is stored", )
cmd_opts_pre = parser_pre.parse_known_args()[0]
data_path = cmd_opts_pre.data_dir
models_path = os.path.join(data_path, "models")
default_ddp_path = Path(models_path, 'deepdanbooru')
def preload(parser: ArgumentParser):
# default deepdanbooru use different paths:
# models/deepbooru and models/torch_deepdanbooru
# https://github.com/AUTOMATIC1111/stable-diffusion-webui/commit/c81d440d876dfd2ab3560410f37442ef56fc6632
parser.add_argument(
'--deepdanbooru-projects-path',
type=str,
help='Path to directory with DeepDanbooru project(s).',
default=default_ddp_path
)
元ネタ
restartUIで無事エラーも消えてTagger使えるようになりました!
直らない場合はpreload.pyの変更を元に戻してください。
そして次の方法を試してみてください。
変更対象ファイル
stable-diffusion-webui\extensions\stable-diffusion-webui-wd14-tagger\tagger\utils.py
変更箇所
★変更前
# load deepdanbooru project
os.makedirs(
getattr(shared.cmd_opts, 'deepdanbooru_projects_path', default_ddp_path),
exist_ok=True
)
65行目あたりにこんな記述があるのでここに以下2行を追加
deepdanbooru_projects_path = "models/torch_deepdanbooru"
shared.cmd_opts.deepdanbooru_projects_path = deepdanbooru_projects_path
★変更後
# load deepdanbooru project
deepdanbooru_projects_path = "models/torch_deepdanbooru"
shared.cmd_opts.deepdanbooru_projects_path = deepdanbooru_projects_path
os.makedirs(
getattr(shared.cmd_opts, 'deepdanbooru_projects_path', default_ddp_path),
exist_ok=True
)
ImportError: cannot import name 'models_path' from partially initialized module 'modules.shared'
このエラーが残りますがTaggerは使えます。
元ネタ(コメントに記述あります)