610a7f4e14
Otherwise, we may override it with one of the next two path (. or ..) if it is present there, and then the local paths of other modules (taming transformers, codeformers, etc.) wont be found in sd_path/../. Fix https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/1085
40 lines
1.6 KiB
Python
40 lines
1.6 KiB
Python
import argparse
|
|
import os
|
|
import sys
|
|
|
|
script_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
|
models_path = os.path.join(script_path, "models")
|
|
sys.path.insert(0, script_path)
|
|
|
|
# search for directory of stable diffusion in following places
|
|
sd_path = None
|
|
possible_sd_paths = [os.path.join(script_path, 'repositories/stable-diffusion'), '.', os.path.dirname(script_path)]
|
|
for possible_sd_path in possible_sd_paths:
|
|
if os.path.exists(os.path.join(possible_sd_path, 'ldm/models/diffusion/ddpm.py')):
|
|
sd_path = os.path.abspath(possible_sd_path)
|
|
break
|
|
|
|
assert sd_path is not None, "Couldn't find Stable Diffusion in any of: " + str(possible_sd_paths)
|
|
|
|
path_dirs = [
|
|
(sd_path, 'ldm', 'Stable Diffusion', []),
|
|
(os.path.join(sd_path, '../taming-transformers'), 'taming', 'Taming Transformers', []),
|
|
(os.path.join(sd_path, '../CodeFormer'), 'inference_codeformer.py', 'CodeFormer', []),
|
|
(os.path.join(sd_path, '../BLIP'), 'models/blip.py', 'BLIP', []),
|
|
(os.path.join(sd_path, '../k-diffusion'), 'k_diffusion/sampling.py', 'k_diffusion', ["atstart"]),
|
|
]
|
|
|
|
paths = {}
|
|
|
|
for d, must_exist, what, options in path_dirs:
|
|
must_exist_path = os.path.abspath(os.path.join(script_path, d, must_exist))
|
|
if not os.path.exists(must_exist_path):
|
|
print(f"Warning: {what} not found at path {must_exist_path}", file=sys.stderr)
|
|
else:
|
|
d = os.path.abspath(d)
|
|
if "atstart" in options:
|
|
sys.path.insert(0, d)
|
|
else:
|
|
sys.path.append(d)
|
|
paths[what] = d
|