mirror of
https://github.com/vladmandic/automatic
synced 2026-09-19 09:14:35 +02:00
fix model paths
This commit is contained in:
+26
-30
@@ -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'))
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user