fix model paths

This commit is contained in:
Vladimir Mandic
2023-10-19 13:22:34 -04:00
parent d173821116
commit 441ca2f648
4 changed files with 30 additions and 32 deletions
+26 -30
View File
@@ -1,17 +1,18 @@
import os
import sys
import modules.paths_internal
from modules import paths_internal, errors
data_path = modules.paths_internal.data_path
script_path = modules.paths_internal.script_path
models_path = modules.paths_internal.models_path
sd_configs_path = modules.paths_internal.sd_configs_path
sd_default_config = modules.paths_internal.sd_default_config
sd_model_file = modules.paths_internal.sd_model_file
default_sd_model_file = modules.paths_internal.default_sd_model_file
extensions_dir = modules.paths_internal.extensions_dir
extensions_builtin_dir = modules.paths_internal.extensions_builtin_dir
debug = errors.log.info if os.environ.get('SD_PATH_DEBUG', None) is not None else lambda *args, **kwargs: None
data_path = paths_internal.data_path
script_path = paths_internal.script_path
models_path = paths_internal.models_path
sd_configs_path = paths_internal.sd_configs_path
sd_default_config = paths_internal.sd_default_config
sd_model_file = paths_internal.sd_model_file
default_sd_model_file = paths_internal.default_sd_model_file
extensions_dir = paths_internal.extensions_dir
extensions_builtin_dir = paths_internal.extensions_builtin_dir
# data_path = cmd_opts_pre.data
sys.path.insert(0, script_path)
@@ -39,14 +40,14 @@ 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)
errors.log.error(f'Required path not found: path={must_exist_path} item={what}')
else:
d = os.path.abspath(d)
sys.path.append(d)
paths[what] = d
def create_paths(opts, log=None):
def create_paths(opts):
def create_path(folder):
if folder is None or folder == '':
return
@@ -54,28 +55,22 @@ def create_paths(opts, log=None):
return
try:
os.makedirs(folder, exist_ok=True)
if log is not None:
log.debug(f'Create folder={folder}')
errors.log.info(f'Create folder={folder}')
except Exception as e:
if log is not None:
log.error(f'Create Failed folder={folder} {e}')
errors.log.error(f'Create Failed folder={folder} {e}')
def fix_path(folder):
tgt = opts.data.get(folder, None) or opts.data_labels[folder].default
if tgt is None or tgt == '':
return tgt
if os.path.isabs(tgt):
return tgt
if len(data_path) > 0 and tgt.startswith(data_path): # path is already relative to data_path
return tgt
else:
tgt = os.path.join(data_path, tgt)
if tgt.startswith('..'):
tgt = os.path.abspath(tgt)
if os.path.isabs(tgt):
return tgt
tgt = os.path.relpath(tgt, script_path)
opts.data[folder] = tgt
fix = tgt
if not os.path.isabs(tgt) and len(data_path) > 0 and not tgt.startswith(data_path): # path is already relative to data_path
fix = os.path.join(data_path, fix)
if fix.startswith('..'):
fix = os.path.abspath(fix)
fix = fix if os.path.isabs(fix) else os.path.relpath(fix, script_path)
opts.data[folder] = fix
debug(f'Paths: folder={folder} original="{tgt}" target="{fix}"')
return opts.data[folder]
create_path(data_path)
@@ -85,11 +80,12 @@ def create_paths(opts, log=None):
create_path(extensions_dir)
create_path(extensions_builtin_dir)
create_path(fix_path('temp_dir'))
create_path(fix_path('hypernetwork_dir'))
create_path(fix_path('ckpt_dir'))
create_path(fix_path('vae_dir'))
create_path(fix_path('diffusers_dir'))
create_path(fix_path('vae_dir'))
create_path(fix_path('lora_dir'))
create_path(fix_path('embeddings_dir'))
create_path(fix_path('hypernetwork_dir'))
create_path(fix_path('outdir_samples'))
create_path(fix_path('outdir_txt2img_samples'))
create_path(fix_path('outdir_img2img_samples'))
+2 -1
View File
@@ -269,7 +269,8 @@ def select_checkpoint(op='model'):
return checkpoint_info
if len(checkpoints_list) == 0 and not shared.cmd_opts.no_download:
shared.log.error("Cannot generate without a checkpoint")
shared.log.error("Use --ckpt <path-to-checkpoint> to force using existing checkpoint")
shared.log.info("Set system paths to use existing folders in a different location")
shared.log.info("Or use --ckpt <path-to-checkpoint> to force using existing checkpoint")
return None
checkpoint_info = next(iter(checkpoints_list.values()))
if model_checkpoint is not None: