Найти в Дзене

Включение поддержки "UV" в "ComfyUI" или как мужики без "pip install" обходятся на Python 3.13 и 3.12

Этот релиз моего инсталлятора связан с официальным включением поддержки нового менеджера пакетов "UV" нодой "ComfyUI_Manager". Я очень рад этому, потому что еще полгода назад писал, что за "UV" будущее, и последует переход не него с отказом от "PIP". Я переписал предлагаемый инсталлятор с технологии BAT-файла, на технологию "TOML"-файла, что закономерно и соответствует применяемой в "UV" технологии проектов. Репозиторий находится по адресу: Сейчас мы с вами пройдем весь этап установки "ComfyUI" с помощью этого, нового метода. Итак: я создаю новую папку "с:\MyTest" Захожу на адрес: https://github.com/Nestorchik/ComfyUI_toml и копирую адрес GIT-репозитория в буфер: Будучи уже в текущей папке "c:\MyTest" в командной строке ввожу "git clone" + пробел + "Ctrl-V" и у меня получается следующая команда, которую я выполняю: У нас появляется папка "c:\MyTest\ComfyUI_toml" со следующими файлами: И мы запускаем на выполнение файл "install_ComfyUI.bat". Этот файл клонирует сам "ComfyUI" и "ComfyUI

Этот релиз моего инсталлятора связан с официальным включением поддержки нового менеджера пакетов "UV" нодой "ComfyUI_Manager". Я очень рад этому, потому что еще полгода назад писал, что за "UV" будущее, и последует переход не него с отказом от "PIP".

Я переписал предлагаемый инсталлятор с технологии BAT-файла, на технологию "TOML"-файла, что закономерно и соответствует применяемой в "UV" технологии проектов.

Репозиторий находится по адресу:

GitHub - Nestorchik/ComfyUI_toml: Установка "ComfyUI" с помощью "project.toml" файла менеджером "UV"

Сейчас мы с вами пройдем весь этап установки "ComfyUI" с помощью этого, нового метода.

Итак: я создаю новую папку "с:\MyTest"

  • md c:\MyTest
  • cd /d c:\MyTest

Захожу на адрес: https://github.com/Nestorchik/ComfyUI_toml и копирую адрес GIT-репозитория в буфер:

-2

Будучи уже в текущей папке "c:\MyTest" в командной строке ввожу "git clone" + пробел + "Ctrl-V" и у меня получается следующая команда, которую я выполняю:

  • git clone https://github.com/Nestorchik/ComfyUI_toml.git
-3

У нас появляется папка "c:\MyTest\ComfyUI_toml" со следующими файлами:

-4

И мы запускаем на выполнение файл "install_ComfyUI.bat".

Этот файл клонирует сам "ComfyUI" и "ComfyUI_Manager" туда, где они должны находиться, и запускает весь процесс установки. Установка может быть довольно долгой, поскольку скачиваются большие по размеру пакеты питона, uде только один "Torch-CUDA" занимает более 5 гигабайт!!! Просто оставьте и идите пить чай.

Примечание: длительная установка проходит только в первый раз. При первой установке пакетов они помещаются в локальный кеш самого "UV" и при повторной установке будут браться оттуда. Для примера: у меня повторная установка всех пакетов вместе с созданием VENV занимает... 6 секунд (!!!)
Именно этим и хорошо менеджер "UV"!

Запуск "install_CimfyUI.bat"

Будут пройдены этапы:

  • установка UV (если уже стоит, то его обновление)
  • клонирование git-репозитория "omfyUI"
  • клонирование git-репозитория "omfyUI_Manager"
  • запуск установки всех пакетов для этих компонентов
  • запуск самого "ComfyUI"
Процесс инсталляции У МЕНЯ до старта
Процесс инсталляции У МЕНЯ до старта

Следует учесть, что так быстро проходит только по причине того, что у меня все пакеты УЖЕ В КЕШЕ!!! У вас лог может отличаться!

Запуск интерфейса
Запуск интерфейса

Повторный запуск произdодится уже файлом "run.bat"

Саму папку "ComfyUI_toml" со всем содержимым можно перемещать в пределах компьютера куда угодно, от этого она работоспособность не теряет, поскольку "привязку" к местоположению на диске имеет только "python" от которого строится "venv" этого экземпляра комфика.

Очень важное примечание к идеологии "UV"

Примечание:

Рядом с файлом "pyproject.toml" будет создан файл "uv.lock" в котором точно описываются все адреса пакетов, их версии, чек-суммы файлов и т.п. для того, чтобы при нарушении целостности набора пакетов питона UV мог бы его быстро восстановить. Все данные для восстановления пакетов записываются в этот файл только при использовании дальнейшей установки пакетов через команду "uv add <пакет>", а все, что установлено через "pip install" или "uv pip install" в него не попадает!!!

Для чего так задумано?

Безопасность!

Вот я удаляю VENV вообще!!!

-7

Теперь моя папка не содержит VENV !!!!!!!!!!

Я запускаю "run.bat". Он стартует, а поскольку старт идет через "UV", то он на лету (здесь за 6,61 секунды!!!) восстанавливает его (красные стрелки) и... как ни в чем не бывало запускает комфика.

-8

То же самое будет, если кроме VENV будет удалена нужная (тут 3.12) версия питона!!! Она будет просто скачана и установлена автоматически, после чего от нее будет восстановлено VENV и запущен проект!!!

Это как раз и есть особенность "UV" - не хранить ненужную информацию и уметь восстанавливать ее в тот момент, когда она потребовалась.

Давайте протестируем и это "фичу".

Я удаляю VENV, плюс к этому удаляю сам Python командой:

  • uv python uninstall 3.12
  • uv python list

Команда удаления, поcле нее команда "list" показывает нам, что у нас в наличии только 3.13 версия питона.

-9

Запускаем "run.bat"

Автоматом скачивается и устанавливается НУЖНАЯ версия питона
Автоматом скачивается и устанавливается НУЖНАЯ версия питона

Потом запускается восстановление VENV

-11

И происходит стандартный запуск "ComfyUI"

На процесс восстановления уходит 7-12 секунд.

-12

Так строится и распространяется приложение на "UV", при нем все, что нужно для работы и воссоздания проекта, хранится в "projct.toml" файле, из которого "UV" берет информацию о нужной версии питона, нужных пакетах и их версиях (с точным указанием "cuda-не-cuda"), и восстанавливает все компоненты питона. Остается отдельно только установить GIT-репозитории.

В моем этом "проекте" все пакеты прописаны независимо от пакетов самого комфи и менеджера, я просто вписал их в сам toml-файл, мне даже нет нужды обращаться к файлам "requirements.txt", я оттуда пакеты просто переписал в "toml".

При такой постановке распространения любого проекта вообще отпадает необходимость в каких-то "сборках"! Она не нужна В ПРИНЦИПЕ!

Вместо "сборки" и ее гигабайтами и якобы "эксклюзивностью" распространяется toml-скрипт, в котором описана последовательность сборки проекта!

Многие (не буду указывать пальцем!) просто потеряют свою возможность подучать "денюжку за подписку за эксклюзивные дистрибутивы" и может начаться процесс "вражды с набиванием морд" за возможный отток "клиентов", которых "некоторые" доят...

Теперь "О будущем"

С версии "ComfyUI_Manager" 3.16 в нем включена поддержка менеджера "UV" вместо "PIP"!

Я рад, что наконец-то (!!!), начался официальный переход на UV вместо PIP.Он работает на несколько порядков быстрее, чем PIP

По умолчанию используется "pip", но, если вы окончательно перешли на "UV", и он находится "в путях", то включите настройку:

  • use_uv = True

... в файле "ComfyUI\user\default\ComfyUI-Manager\config.ini", где по умолчанию стоит "False".

Ниже находится кусок кода, который заменяет стандартные команды PIP на команды UV:

-13

Стоит отметить, что менеджер "UV" устанавливается движком "свой" и находится в папке ".venv\Scripts" куда устанавливается как пакет питона.

Практически без разницы где именно стоит UV, лишь бы его система находила (так же как и GIT).

Судя по коду настройка просто заменяет все вызовы PIP на вызовы UV, так что это безопасно. Всем советую переключиться на UV !!!

Для установки тем же способом на 3.13 версию питона уже потребуются "пляски с бубном", т.к. все упрется в отсутствии WHL-пакета "sentencepiece" который в бинарном виде официально не существует. Да и подправить надо вот тут версию пайтона:

-14

Впрочем, это пока не актуально, а "изыски чесания правой пяткой левого уха."

Но у русских всегда найдется "лом", которым можно подправить ситуацию следующим образом:

У меня есть WHL-версия этого пакета по адресу: https://dzen.ru/away?to=https%3A%2F%2Fgithub.com%2FNestorchik%2FDzen%2Freleases%2Fdownload%2Fdzen%2Fsentencepiece-0.2.0-cp313-cp313-win_amd64.whl

Она из сети не установится, т.к. эта "репа" не внесена в реестр безопасных, а моя частная. Выход следующий: скачиваем его (файл) локально чем угодно и инсталлируем его отдельно командой (никаких параметров, просто "uv add file"):

  • uv add "локаьный_путь_к_файлу\sentencepiece-0.2.0-cp313-cp313-win_amd64.whl"
-15

Т.к. мы его добавили в конфигурацию через команду проекта "uv add", то он попадет в список "uv.lock" с сохранением там локального пути откуда он был взят:

-16

Впоследствии, при удалении VENV, он восстановится из того же источника.

Если надо "забыть" прошлые варианты установок, надо просто удалить "uv.lock" файл вместе с папкой VENV и командой "uv sync" сгенерировать новое VENV и "uv.lock", это дело займет 6-7 секунд.

Воссоздание VENV из TOML-файла
Воссоздание VENV из TOML-файла

Пример воссоздания VENV из "pyproject.toml" файла
(тут комментарии совсем не нужны)

Вот запуск с того же toml-файла уже на 3.13 питоне.

Запуск на 3.13 питоне
Запуск на 3.13 питоне

И вообще, лучше устанавливать все пакеты через команду "uv add" для гарантии того, что "проект" запомнит именно этот вариант установки и именно этот источник именно этого файла с именно этой чек-суммой.

Я, кстати, еще не тестировал как именно комфик и его менеджер ставят пакеты с помощью "UV", какой именно командой и какие результаты получаются. Это уже материалы для следующей статьи. По крайней мере нужно знать направление в котором развивается комфик, а на UV он рано или поздно все равно перейдет!

Удачи!!!

Обложка статьи
Обложка статьи