diff --git a/comfy/cli_args.py b/comfy/cli_args.py index 2f30b72d2981..d86d74267f48 100644 --- a/comfy/cli_args.py +++ b/comfy/cli_args.py @@ -47,6 +47,7 @@ def __call__(self, parser, namespace, values, option_string=None): parser.add_argument("--output-directory", type=str, default=None, help="Set the ComfyUI output directory. Overrides --base-directory.") parser.add_argument("--temp-directory", type=str, default=None, help="Set the ComfyUI temp directory (default is in the ComfyUI directory). Overrides --base-directory.") parser.add_argument("--input-directory", type=str, default=None, help="Set the ComfyUI input directory. Overrides --base-directory.") +parser.add_argument("--custom-nodes-directory", type=str, default=None, help="Set the ComfyUI custom_nodes directory. Overrides --base-directory and environment variable COMFYUI_CUSTOM_NODES_DIR.") parser.add_argument("--auto-launch", action="store_true", help="Automatically launch ComfyUI in the default browser.") parser.add_argument("--disable-auto-launch", action="store_true", help="Disable auto launching the browser.") parser.add_argument("--cuda-device", type=int, default=None, metavar="DEVICE_ID", help="Set the id of the cuda device this instance will use. All other devices will not be visible.") diff --git a/folder_paths.py b/folder_paths.py index f110d832bb23..98b7d340c609 100644 --- a/folder_paths.py +++ b/folder_paths.py @@ -4,6 +4,7 @@ import time import mimetypes import logging +import sys from typing import Literal, List from collections.abc import Collection @@ -115,6 +116,16 @@ def set_input_directory(input_dir: str) -> None: global input_directory input_directory = input_dir +def set_custom_nodes_directory(custom_nodes_dir: str) -> None: + global folder_names_and_paths + + delimiter = ":" + if sys.platform in ("win32", "cygwin"): + delimiter = ";" + + directories = custom_nodes_dir.split(delimiter) + folder_names_and_paths["custom_nodes"] = (directories, set()) + def get_output_directory() -> str: global output_directory return output_directory diff --git a/main.py b/main.py index e1b0f1620bbc..a6b241da48f7 100644 --- a/main.py +++ b/main.py @@ -32,7 +32,7 @@ def apply_custom_paths(): for config_path in itertools.chain(*args.extra_model_paths_config): utils.extra_config.load_extra_path_config(config_path) - # --output-directory, --input-directory, --user-directory + # --output-directory, --input-directory, --user-directory, --custom-nodes-directory if args.output_directory: output_dir = os.path.abspath(args.output_directory) logging.info(f"Setting output directory to: {output_dir}") @@ -56,6 +56,11 @@ def apply_custom_paths(): logging.info(f"Setting user directory to: {user_dir}") folder_paths.set_user_directory(user_dir) + if args.custom_nodes_directory: + custom_nodes_dir = os.path.abspath(args.custom_nodes_directory) + logging.info(f"Setting custom nodes directory to: {custom_nodes_dir}") + folder_paths.set_custom_nodes_directory(custom_nodes_dir) + def execute_prestartup_script(): if args.disable_all_custom_nodes and len(args.whitelist_custom_nodes) == 0: @@ -110,7 +115,6 @@ def execute_script(script_path): import threading import gc - if os.name == "nt": os.environ['MIMALLOC_PURGE_DELAY'] = '0' @@ -155,6 +159,7 @@ def execute_script(script_path): import app.logger import hook_breaker_ac10a0 + def cuda_malloc_warning(): device = comfy.model_management.get_torch_device() device_name = comfy.model_management.get_torch_device_name(device) @@ -293,7 +298,7 @@ def cleanup_temp(): def setup_database(): try: - from app.database.db import init_db, dependencies_available + from app.database.db import dependencies_available, init_db if dependencies_available(): init_db() except Exception as e: