Files
2025-12-07 12:53:25 +13:00

116 lines
3.6 KiB
Python

import os
import subprocess
import sys
import platform
def install_requirements():
# Only run once
if getattr(sys, "_custom_node_deps_installed", False):
return
sys._custom_node_deps_installed = True
try:
import cv2
import torch
import numpy
import kornia
import insightface
import onnxruntime
return
except ModuleNotFoundError:
pass
print("[Custom Node] Installing missing dependencies...")
py_ver = sys.version_info
req_file = os.path.join(os.path.dirname(__file__), "requirements.txt")
# Detect OS
system_name = platform.system().lower()
is_windows = system_name == "windows"
is_linux = system_name == "linux"
# Base requirements
subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", req_file])
# --------------------------
# NumPy wheels by OS
# --------------------------
numpy_url = None
if is_windows and py_ver.major == 3 and py_ver.minor == 12:
numpy_url = (
"https://download.pytorch.org/whl/"
"numpy-1.26.3-cp312-cp312-win_amd64.whl"
"#sha256=da4b0c6c699a0ad73c810736303f7fbae483bcb012e38d7eb06a5e3b432c981b"
)
elif is_linux and py_ver.major == 3 and py_ver.minor == 12:
numpy_url = (
"https://download.pytorch.org/whl/"
"numpy-1.26.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"
"#sha256=5f24750ef94d56ce6e33e4019a8a4d68cfdb1ef661a52cdaee628a56d2437419"
)
# --------------------------
# InsightFace wheels by OS
# --------------------------
insightface_url = None
# Windows wheels
if is_windows:
if py_ver.major == 3 and py_ver.minor == 12:
insightface_url = (
"https://huggingface.co/hanamizuki-ai/insightface-releases/resolve/"
"8be7c041a804350c6cbfaba3c4941949a7bad0a4/"
"insightface-0.7.3-cp312-cp312-win_amd64.whl"
)
elif py_ver.major == 3 and py_ver.minor == 13:
insightface_url = (
"https://huggingface.co/MonsterMMORPG/Wan_GGUF/resolve/main/"
"insightface-0.7.3-cp313-cp313-win_amd64.whl"
)
# Linux wheels
elif is_linux:
if py_ver.major == 3 and py_ver.minor == 12:
insightface_url = (
"https://huggingface.co/iwr-redmond/linux-wheels/resolve/main/"
"insightface-0.7.3-cp312-cp312-linux_x86_64.whl"
)
# Add this when you have a CP313 Linux wheel
elif py_ver.major == 3 and py_ver.minor == 13:
insightface_url = (
"https://huggingface.co/iwr-redmond/linux-wheels/resolve/main/"
"insightface-0.7.3-cp312-cp312-linux_x86_64.whl"
)
# --------------------------
# Install wheels
# --------------------------
if insightface_url:
subprocess.check_call([
sys.executable, "-m", "pip", "install", "--force-reinstall", insightface_url
])
if numpy_url:
subprocess.check_call([
sys.executable, "-m", "pip", "install", "--force-reinstall", numpy_url
])
print("[Custom Node] Dependencies installed. Please restart ComfyUI.")
raise SystemExit
install_requirements()
# ComfyUI exports
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
from .input_switch import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
__all__ = [
"NODE_CLASS_MAPPINGS",
"NODE_DISPLAY_NAME_MAPPINGS"
]