見出し画像

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は使えます。

元ネタ(コメントに記述あります)



いいなと思ったら応援しよう!