UmeAiRT-Update-ComfyUI.bat deletes new Custom Nodes

#15
by Hansiburli69 - opened

It took me hours to install the custom nodes for my preferred workflows, but after running UmeAiRT-Update-ComfyUI.bat, they were all gone. That's a no-go!!! The auto-installer is useless like this!

Owner

There is an update method integrated into ComfyUI Manager if you don't want it to affect your other nodes.

Because I can't anticipate all possible nodes, my update script only installs a list of nodes that I've tested together.

(edited after initial post for clarity and accuracy)
That's in my list of issues to fix. Currently I also do not run the update batch file but use the in-interface option once ComfyUI with Manager is launched.

But since I too have been through the pain of hours-long custom nodes installs, and then the seemingly inevitable process of starting over again because pip did something like downgrade numpy to 1.26 because XYZ custom node said it needed "greater than 1.25 but less than 2.4" and pip decides "Well, 1.26 meets that requirement," and can't tell from its vantage point that you have literally 10 other things that need numpy 2.*. But pip does it, and in the process, breaking half of the dependency chain because pip is terrible at resolving dependencies and flat out cannot cross-check dependencies for everything installed and will even just frequently throw up its arms and go "Welp, I'm pretty much sure I broke your site-packages, have fun fixing it."

So my considered advice is to use uv instead. uv is an alternative package manager for Python, written in Rust, which offers much faster resolution and operations, and real dependency checking. ComfyUI-Manager already supports it—you just have to change the setting. In fact, I'm currently working on a dev branch which can do it right from the beginning and make uv the package manager for either install: conda or lite, and it will be a transparent (mostly) boost to the user.

The biggest impact should be everything to do with package handling goes like 5x-10x faster, there is real dependency handling, and in your (and my) sort of scenario, where there are maybe 2 or 3 dozen other custom_nodes installed after setting up ComfyUI, there is a huge benefit in speed of installation and stability.

Just toggle the use_uv option in <INSTALLDIR>\user\__manager\config.ini and for good measure, if it's not on, enable the downgrade_blacklist too. That way ComfyUI will refuse to downgrade anything to satisfy dependencies.

use_uv = True 
downgrade_blacklist = True

Thanks, I will try

thats in my list of issues to fix.

Currently I also do not run the update batch file but use the in-interface option once ComfyUI with manager is launched.
But since I too have been through the pain of hours long custom nodes installs, and then the seemingly inevitable process of starting over again because pip did something like downgrade numpy to 1.26 because XYZ custom node said it needed greater than 1.25 but less than 2.4 and pip decides "Well, 1.26 meets that requirement," and can't tell from its vantage point that you have literally 10 other things that need numpy2.*. But pip does it, and in the process, breaking half of the dependency chain because pip is terrible at resolving dependencies and flat out can not cross check dependencies for everything installed and will even just frequently throw up its arms and go 'Welp, I'm pretty much sure I broke your site-packages, have fun fixing it'.

So my considered advice is to use uv instead. uv is an alternative package manager for python, written in rust, which offers much faster resolution and operations, and real dependency checking. ComfyUI-Manager already supports , you just have to change the In fact I'm currently working on a dev branch which can do it right from the beginning and make uv the package manager for either install: conda or lite, and it will be a transparent (mostly) boost to the user. Biggest impact should be everything to do with package handling goes like 5x-10x faster, there is real dependency handling, and in your (and my) sort of scenario, where there are maybe 2 or 3 dozen other custom_nodes installed after setting up comfy, there is a huge benefit in speed of installation, and stability. just toggling the use_uv option in (\user__manager\config.ini) and for good measure, if its not on, enable the downgrade_blacklist too. THat ComfyUI will refuse to downgrade anything to satisfy dependencies.

 use_uv = True 
downgrade_blacklist = True1

Is True1 right?

 use_uv = True 
downgrade_blacklist = True1

Is True1 right?

@Hansiburli69

  1. No, "True1" is not right - that was a typo from when I tried to edit my post for clarity, not knowing it had already posted incomplete (missing the closing markdown for the code block and .ini syntax highlighting). The submit button wouldn't work properly.

  2. My original comment is now edited for clarity, but

  3. "True1" would still be read by Python's config parser as truthy enough to assume the user meant a non-zero (i.e. true) value. It's a Boolean flag, so the valid values are typically True/False or 1/0. Python's config parsers are often forgiving and will interpret "True1" the same as "True" or "1" in my experience. So while it was technically not what I intended to type, it likely would have worked anyway.

I initially tried putting "numpy" in there by mistake, and it was still considered truthy by Python, activating the setting. Python's ConfigParser is permissive by default - anything that's not explicitly recognized as false (like "False", "0", "no") gets treated as True. So "True1" would work, but a typo like "Flase" would also be truthy when you meant it to be false. While ConfigParser can be configured for stricter validation, many tools, like ComfyUI-Manager use the default permissive behavior.

Sources:

  • Python ConfigParser documentation: https://docs.python.org/3/library/configparser.html (shows that getboolean() only recognizes specific strings as falsy: 'false', 'no', 'off', '0' - anything else is treated as True)
  • Python Module of the Week ConfigParser examples: https://pymotw.com/3/configparser/ (demonstrates the behavior with practical examples)
  • ConfigParser customization documentation covers how to override the default permissive behavior using custom converters or the BOOLEAN_STATES attribute

Sign up or log in to comment