Files
fn_registry/python/functions/ml/comfyui_install_custom_node.md
T
egutierrez f12272d002 chore: auto-commit (61 archivos)
- docs/capabilities/INDEX.md
- docs/capabilities/comfyui.md
- python/functions/browser/comfyui_export_workflow_ui.md
- python/functions/browser/comfyui_export_workflow_ui.py
- python/functions/browser/comfyui_load_workflow_ui.md
- python/functions/browser/comfyui_load_workflow_ui.py
- python/functions/browser/comfyui_queue_prompt_ui.md
- python/functions/browser/comfyui_queue_prompt_ui.py
- python/functions/browser/comfyui_refresh_nodes_ui.md
- python/functions/browser/comfyui_refresh_nodes_ui.py
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-24 00:30:30 +02:00

3.7 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
comfyui_install_custom_node function py ml 1.0.0 impure def comfyui_install_custom_node(repo_url: str, *, comfyui_dir: str = "~/ComfyUI", pip_install: bool = True, restart: bool = False) -> dict Instala un custom node de ComfyUI: git clone del repo en custom_nodes/<name> + (si trae requirements.txt) pip install de sus deps en el venv de ComfyUI. El venv suele crearse con uv y no trae pip, asi que el instalador se autodetecta (python -m pip -> uv pip -> pip). NO reinicia el servidor por defecto (restart=False): el nodo se carga al siguiente arranque. Impura: subprocess git/pip/uv + escritura en disco. Solo stdlib.
comfyui
ml
custom-nodes
install
git
pip
stable-diffusion
false error_go_core
os
shutil
subprocess
name desc
repo_url URL del repositorio git del custom node (ej. 'https://github.com/rgthree/rgthree-comfy').
name desc
comfyui_dir Raiz de la instalacion de ComfyUI (se expande ~). Default '~/ComfyUI'. keyword-only.
name desc
pip_install Si True y el repo trae requirements.txt, instala sus dependencias en el venv de ComfyUI. keyword-only.
name desc
restart NO soportado de forma segura (default False). El nodo se carga al reiniciar el servidor; hazlo tu cuando no haya generaciones en curso. True solo se anota en error, NO reinicia (evita cortar trabajo del servidor). keyword-only.
dict {ok, path, pip_done, error}. ok=True si el nodo quedo clonado en disco (o ya estaba). pip_done=True si se instalaron las dependencias. error describe el fallo de git/pip o las advertencias (ya existia, sin requirements, restart ignorado). false
python/functions/ml/comfyui_install_custom_node.py

Ejemplo

import sys, os
sys.path.insert(0, os.path.join(os.environ["HOME"], "fn_registry", "python", "functions"))
from ml.comfyui_install_custom_node import comfyui_install_custom_node

out = comfyui_install_custom_node(
    "https://github.com/rgthree/rgthree-comfy",
    restart=False,    # no reinicia el server; el nodo se carga al proximo arranque
)
print(out["ok"], out["path"], "pip_done=", out["pip_done"])
# {"ok": True, "path": ".../custom_nodes/rgthree-comfy", "pip_done": True, "error": ""}

El ./fn run directo no aplica (firma con * keyword-only); usa el import o un heredoc.

Cuando usarla

Cuando un workflow ajeno usa un nodo custom que no tienes (comfyui_resolve_workflow_deps te dice cual falta) o quieras anadir un pack de nodos conocido. Tras instalar, reinicia ComfyUI manualmente (cuando no haya generaciones en curso) para que el nodo aparezca.

Gotchas

  • Impura: ejecuta git clone y, si hay requirements.txt, pip/uv pip en el venv de ComfyUI; escribe en ~/ComfyUI/custom_nodes/.
  • NO reinicia el servidor. restart=True se ignora (solo se anota en error): un restart en caliente corta cualquier generacion en curso. Reinicia tu cuando el server este libre. El nodo NO se carga hasta ese reinicio.
  • El venv de ComfyUI creado con uv no trae pip: la funcion detecta el instalador (python -m pip -> uv pip --python <venv> -> binario pip). Si no hay ninguno, pip_done=False y lo anota en error (el clone sigue siendo valido).
  • Idempotente con el clone: si el dir ya existe NO re-clona (lo anota en error), pero SI reintenta el pip install si pip_install=True.
  • ok=True significa "clonado en disco", no "cargado en el server". Un clone OK con pip fallido devuelve ok=True, pip_done=False + el error de pip.
  • Un repo_url invalido (404) devuelve ok=False con el stderr de git.