Compare commits
2 Commits
api/openap
...
dbg1484-1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
338d7abfa8 | ||
|
|
f8e5f5bcbb |
@@ -3,6 +3,8 @@ import sys
|
|||||||
|
|
||||||
cli_mode_flag = os.path.join(os.path.dirname(__file__), '.enable-cli-only-mode')
|
cli_mode_flag = os.path.join(os.path.dirname(__file__), '.enable-cli-only-mode')
|
||||||
|
|
||||||
|
print("[DBG] point14")
|
||||||
|
|
||||||
if not os.path.exists(cli_mode_flag):
|
if not os.path.exists(cli_mode_flag):
|
||||||
sys.path.append(os.path.join(os.path.dirname(__file__), "glob"))
|
sys.path.append(os.path.join(os.path.dirname(__file__), "glob"))
|
||||||
import manager_server # noqa: F401
|
import manager_server # noqa: F401
|
||||||
|
|||||||
@@ -269,18 +269,27 @@ class PIPFixer:
|
|||||||
self.prev_pip_versions = { **prev_pip_versions }
|
self.prev_pip_versions = { **prev_pip_versions }
|
||||||
|
|
||||||
def torch_rollback(self):
|
def torch_rollback(self):
|
||||||
|
print("[DBG] point(torch_rollback) 1")
|
||||||
spec = self.prev_pip_versions['torch'].split('+')
|
spec = self.prev_pip_versions['torch'].split('+')
|
||||||
|
print("[DBG] point(torch_rollback) 2")
|
||||||
if len(spec) > 0:
|
if len(spec) > 0:
|
||||||
platform = spec[1]
|
platform = spec[1]
|
||||||
else:
|
else:
|
||||||
|
print("[DBG] point(torch_rollback) 3")
|
||||||
cmd = make_pip_cmd(['install', '--force', 'torch', 'torchvision', 'torchaudio'])
|
cmd = make_pip_cmd(['install', '--force', 'torch', 'torchvision', 'torchaudio'])
|
||||||
subprocess.check_output(cmd, universal_newlines=True)
|
subprocess.check_output(cmd, universal_newlines=True)
|
||||||
|
print("[DBG] point(torch_rollback) 4")
|
||||||
logging.error(cmd)
|
logging.error(cmd)
|
||||||
|
print("[DBG] point(torch_rollback) 5")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
print("[DBG] point(torch_rollback) 6")
|
||||||
torch_ver = StrictVersion(spec[0])
|
torch_ver = StrictVersion(spec[0])
|
||||||
|
print("[DBG] point(torch_rollback) 7")
|
||||||
torch_ver = f"{torch_ver.major}.{torch_ver.minor}.{torch_ver.patch}"
|
torch_ver = f"{torch_ver.major}.{torch_ver.minor}.{torch_ver.patch}"
|
||||||
|
print("[DBG] point(torch_rollback) 8")
|
||||||
torch_torchvision_torchaudio_ver = torch_torchvision_torchaudio_version_map.get(torch_ver)
|
torch_torchvision_torchaudio_ver = torch_torchvision_torchaudio_version_map.get(torch_ver)
|
||||||
|
print("[DBG] point(torch_rollback) 9")
|
||||||
|
|
||||||
if torch_torchvision_torchaudio_ver is None:
|
if torch_torchvision_torchaudio_ver is None:
|
||||||
cmd = make_pip_cmd(['install', '--pre', 'torch', 'torchvision', 'torchaudio',
|
cmd = make_pip_cmd(['install', '--pre', 'torch', 'torchvision', 'torchaudio',
|
||||||
@@ -292,46 +301,64 @@ class PIPFixer:
|
|||||||
'--index-url', f"https://download.pytorch.org/whl/{platform}"])
|
'--index-url', f"https://download.pytorch.org/whl/{platform}"])
|
||||||
logging.info(f"[ComfyUI-Manager] restore PyTorch to {torch_ver}+{platform}")
|
logging.info(f"[ComfyUI-Manager] restore PyTorch to {torch_ver}+{platform}")
|
||||||
|
|
||||||
|
print("[DBG] point(torch_rollback) 10")
|
||||||
subprocess.check_output(cmd, universal_newlines=True)
|
subprocess.check_output(cmd, universal_newlines=True)
|
||||||
|
print("[DBG] point(torch_rollback) 11")
|
||||||
|
|
||||||
def fix_broken(self):
|
def fix_broken(self):
|
||||||
|
print("[DBG] point9-1")
|
||||||
new_pip_versions = get_installed_packages(True)
|
new_pip_versions = get_installed_packages(True)
|
||||||
|
|
||||||
|
print("[DBG] point9-2")
|
||||||
# remove `comfy` python package
|
# remove `comfy` python package
|
||||||
try:
|
try:
|
||||||
|
print("[DBG] point9-3")
|
||||||
if 'comfy' in new_pip_versions:
|
if 'comfy' in new_pip_versions:
|
||||||
|
print("[DBG] point9-3-1")
|
||||||
cmd = make_pip_cmd(['uninstall', 'comfy'])
|
cmd = make_pip_cmd(['uninstall', 'comfy'])
|
||||||
subprocess.check_output(cmd, universal_newlines=True)
|
subprocess.check_output(cmd, universal_newlines=True)
|
||||||
|
|
||||||
logging.warning("[ComfyUI-Manager] 'comfy' python package is uninstalled.\nWARN: The 'comfy' package is completely unrelated to ComfyUI and should never be installed as it causes conflicts with ComfyUI.")
|
logging.warning("[ComfyUI-Manager] 'comfy' python package is uninstalled.\nWARN: The 'comfy' package is completely unrelated to ComfyUI and should never be installed as it causes conflicts with ComfyUI.")
|
||||||
|
print("[DBG] point9-4")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
print("[DBG] point9-5")
|
||||||
logging.error("[ComfyUI-Manager] Failed to uninstall `comfy` python package")
|
logging.error("[ComfyUI-Manager] Failed to uninstall `comfy` python package")
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
|
||||||
# fix torch - reinstall torch packages if version is changed
|
# fix torch - reinstall torch packages if version is changed
|
||||||
|
print("[DBG] point9-6")
|
||||||
try:
|
try:
|
||||||
|
print("[DBG] point9-7")
|
||||||
if 'torch' not in self.prev_pip_versions or 'torchvision' not in self.prev_pip_versions or 'torchaudio' not in self.prev_pip_versions:
|
if 'torch' not in self.prev_pip_versions or 'torchvision' not in self.prev_pip_versions or 'torchaudio' not in self.prev_pip_versions:
|
||||||
|
print("[DBG] point9-8")
|
||||||
logging.error("[ComfyUI-Manager] PyTorch is not installed")
|
logging.error("[ComfyUI-Manager] PyTorch is not installed")
|
||||||
elif self.prev_pip_versions['torch'] != new_pip_versions['torch'] \
|
elif self.prev_pip_versions['torch'] != new_pip_versions['torch'] \
|
||||||
or self.prev_pip_versions['torchvision'] != new_pip_versions['torchvision'] \
|
or self.prev_pip_versions['torchvision'] != new_pip_versions['torchvision'] \
|
||||||
or self.prev_pip_versions['torchaudio'] != new_pip_versions['torchaudio']:
|
or self.prev_pip_versions['torchaudio'] != new_pip_versions['torchaudio']:
|
||||||
|
print("[DBG] point9-9")
|
||||||
self.torch_rollback()
|
self.torch_rollback()
|
||||||
|
print("[DBG] point9-10")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
print("[DBG] point9-11")
|
||||||
logging.error("[ComfyUI-Manager] Failed to restore PyTorch")
|
logging.error("[ComfyUI-Manager] Failed to restore PyTorch")
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
|
||||||
# fix opencv
|
# fix opencv
|
||||||
try:
|
try:
|
||||||
|
print("[DBG] point9-12")
|
||||||
ocp = new_pip_versions.get('opencv-contrib-python')
|
ocp = new_pip_versions.get('opencv-contrib-python')
|
||||||
ocph = new_pip_versions.get('opencv-contrib-python-headless')
|
ocph = new_pip_versions.get('opencv-contrib-python-headless')
|
||||||
op = new_pip_versions.get('opencv-python')
|
op = new_pip_versions.get('opencv-python')
|
||||||
oph = new_pip_versions.get('opencv-python-headless')
|
oph = new_pip_versions.get('opencv-python-headless')
|
||||||
|
|
||||||
|
print("[DBG] point9-13")
|
||||||
versions = [ocp, ocph, op, oph]
|
versions = [ocp, ocph, op, oph]
|
||||||
versions = [StrictVersion(x) for x in versions if x is not None]
|
versions = [StrictVersion(x) for x in versions if x is not None]
|
||||||
versions.sort(reverse=True)
|
versions.sort(reverse=True)
|
||||||
|
|
||||||
|
print("[DBG] point9-14")
|
||||||
if len(versions) > 0:
|
if len(versions) > 0:
|
||||||
|
print("[DBG] point9-15")
|
||||||
# upgrade to maximum version
|
# upgrade to maximum version
|
||||||
targets = []
|
targets = []
|
||||||
cur = versions[0]
|
cur = versions[0]
|
||||||
@@ -344,27 +371,40 @@ class PIPFixer:
|
|||||||
if oph is not None and StrictVersion(oph) != cur:
|
if oph is not None and StrictVersion(oph) != cur:
|
||||||
targets.append('opencv-python-headless')
|
targets.append('opencv-python-headless')
|
||||||
|
|
||||||
|
print("[DBG] point9-16")
|
||||||
if len(targets) > 0:
|
if len(targets) > 0:
|
||||||
|
print("[DBG] point9-17")
|
||||||
for x in targets:
|
for x in targets:
|
||||||
cmd = make_pip_cmd(['install', f"{x}=={versions[0].version_string}"])
|
cmd = make_pip_cmd(['install', f"{x}=={versions[0].version_string}"])
|
||||||
subprocess.check_output(cmd, universal_newlines=True)
|
subprocess.check_output(cmd, universal_newlines=True)
|
||||||
|
|
||||||
logging.info(f"[ComfyUI-Manager] 'opencv' dependencies were fixed: {targets}")
|
logging.info(f"[ComfyUI-Manager] 'opencv' dependencies were fixed: {targets}")
|
||||||
|
print("[DBG] point9-18")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
print("[DBG] point9-19")
|
||||||
logging.error("[ComfyUI-Manager] Failed to restore opencv")
|
logging.error("[ComfyUI-Manager] Failed to restore opencv")
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
print("[DBG] point9-20")
|
||||||
|
|
||||||
# fix numpy
|
# fix numpy
|
||||||
try:
|
try:
|
||||||
|
print("[DBG] point9-21")
|
||||||
np = new_pip_versions.get('numpy')
|
np = new_pip_versions.get('numpy')
|
||||||
|
print("[DBG] point9-22")
|
||||||
if np is not None:
|
if np is not None:
|
||||||
|
print("[DBG] point9-23")
|
||||||
if StrictVersion(np) >= StrictVersion('2'):
|
if StrictVersion(np) >= StrictVersion('2'):
|
||||||
|
print("[DBG] point9-24")
|
||||||
cmd = make_pip_cmd(['install', "numpy<2"])
|
cmd = make_pip_cmd(['install', "numpy<2"])
|
||||||
subprocess.check_output(cmd , universal_newlines=True)
|
subprocess.check_output(cmd , universal_newlines=True)
|
||||||
|
print("[DBG] point9-25")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
print("[DBG] point9-26")
|
||||||
logging.error("[ComfyUI-Manager] Failed to restore numpy")
|
logging.error("[ComfyUI-Manager] Failed to restore numpy")
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
|
||||||
|
print("[DBG] point9-28")
|
||||||
|
|
||||||
|
|
||||||
def sanitize(data):
|
def sanitize(data):
|
||||||
return data.replace("<", "<").replace(">", ">")
|
return data.replace("<", "<").replace(">", ">")
|
||||||
|
|||||||
@@ -475,6 +475,7 @@ def read_downgrade_blacklist():
|
|||||||
|
|
||||||
read_downgrade_blacklist()
|
read_downgrade_blacklist()
|
||||||
|
|
||||||
|
print("[DBG] point1")
|
||||||
|
|
||||||
def check_bypass_ssl():
|
def check_bypass_ssl():
|
||||||
try:
|
try:
|
||||||
@@ -487,12 +488,14 @@ def check_bypass_ssl():
|
|||||||
|
|
||||||
check_bypass_ssl()
|
check_bypass_ssl()
|
||||||
|
|
||||||
|
print("[DBG] point2")
|
||||||
|
|
||||||
# Perform install
|
# Perform install
|
||||||
processed_install = set()
|
processed_install = set()
|
||||||
script_list_path = os.path.join(folder_paths.user_directory, "default", "ComfyUI-Manager", "startup-scripts", "install-scripts.txt")
|
script_list_path = os.path.join(folder_paths.user_directory, "default", "ComfyUI-Manager", "startup-scripts", "install-scripts.txt")
|
||||||
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
|
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages())
|
||||||
|
|
||||||
|
print("[DBG] point3")
|
||||||
|
|
||||||
def is_installed(name):
|
def is_installed(name):
|
||||||
name = name.strip()
|
name = name.strip()
|
||||||
@@ -544,6 +547,7 @@ def is_installed(name):
|
|||||||
|
|
||||||
return True # prevent downgrade
|
return True # prevent downgrade
|
||||||
|
|
||||||
|
print("[DBG] point4")
|
||||||
|
|
||||||
if os.path.exists(restore_snapshot_path):
|
if os.path.exists(restore_snapshot_path):
|
||||||
try:
|
try:
|
||||||
@@ -593,6 +597,8 @@ if os.path.exists(restore_snapshot_path):
|
|||||||
def execute_lazy_install_script(repo_path, executable):
|
def execute_lazy_install_script(repo_path, executable):
|
||||||
global processed_install
|
global processed_install
|
||||||
|
|
||||||
|
print("[DBG] point5")
|
||||||
|
|
||||||
install_script_path = os.path.join(repo_path, "install.py")
|
install_script_path = os.path.join(repo_path, "install.py")
|
||||||
requirements_path = os.path.join(repo_path, "requirements.txt")
|
requirements_path = os.path.join(repo_path, "requirements.txt")
|
||||||
|
|
||||||
@@ -625,6 +631,8 @@ def execute_lazy_cnr_switch(target, zip_url, from_path, to_path, no_deps, custom
|
|||||||
import uuid
|
import uuid
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
|
print("[DBG] point6")
|
||||||
|
|
||||||
# 1. download
|
# 1. download
|
||||||
archive_name = f"CNR_temp_{str(uuid.uuid4())}.zip" # should be unpredictable name - security precaution
|
archive_name = f"CNR_temp_{str(uuid.uuid4())}.zip" # should be unpredictable name - security precaution
|
||||||
download_path = os.path.join(custom_nodes_path, archive_name)
|
download_path = os.path.join(custom_nodes_path, archive_name)
|
||||||
@@ -674,12 +682,17 @@ def execute_lazy_cnr_switch(target, zip_url, from_path, to_path, no_deps, custom
|
|||||||
|
|
||||||
def execute_migration(moves):
|
def execute_migration(moves):
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
|
print("[DBG] point7")
|
||||||
|
|
||||||
for x in moves:
|
for x in moves:
|
||||||
if os.path.exists(x[0]) and not os.path.exists(x[1]):
|
if os.path.exists(x[0]) and not os.path.exists(x[1]):
|
||||||
shutil.move(x[0], x[1])
|
shutil.move(x[0], x[1])
|
||||||
print(f"[ComfyUI-Manager] MIGRATION: '{x[0]}' -> '{x[1]}'")
|
print(f"[ComfyUI-Manager] MIGRATION: '{x[0]}' -> '{x[1]}'")
|
||||||
|
|
||||||
|
|
||||||
|
print("[DBG] point8")
|
||||||
|
|
||||||
# Check if script_list_path exists
|
# Check if script_list_path exists
|
||||||
if os.path.exists(script_list_path):
|
if os.path.exists(script_list_path):
|
||||||
print("\n#######################################################################")
|
print("\n#######################################################################")
|
||||||
@@ -738,14 +751,20 @@ if os.path.exists(script_list_path):
|
|||||||
print("\n[ComfyUI-Manager] Startup script completed.")
|
print("\n[ComfyUI-Manager] Startup script completed.")
|
||||||
print("#######################################################################\n")
|
print("#######################################################################\n")
|
||||||
|
|
||||||
|
print("[DBG] point9")
|
||||||
|
|
||||||
pip_fixer.fix_broken()
|
pip_fixer.fix_broken()
|
||||||
|
|
||||||
|
print("[DBG] point10")
|
||||||
|
|
||||||
del processed_install
|
del processed_install
|
||||||
del pip_fixer
|
del pip_fixer
|
||||||
manager_util.clear_pip_cache()
|
manager_util.clear_pip_cache()
|
||||||
|
|
||||||
|
print("[DBG] point11")
|
||||||
|
|
||||||
def check_windows_event_loop_policy():
|
def check_windows_event_loop_policy():
|
||||||
|
print("[DBG] point12")
|
||||||
try:
|
try:
|
||||||
import configparser
|
import configparser
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
@@ -763,6 +782,10 @@ def check_windows_event_loop_policy():
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
print("[DBG] point13")
|
||||||
|
|
||||||
if platform.system() == 'Windows':
|
if platform.system() == 'Windows':
|
||||||
check_windows_event_loop_policy()
|
check_windows_event_loop_policy()
|
||||||
|
|
||||||
|
|
||||||
|
print("[DBG] point14")
|
||||||
Reference in New Issue
Block a user