Добавить в корзинуПозвонить
Найти в Дзене

Установка "ComfyUI" через TOML-файл UV без использования PIP (скорость установки выше в 100 раз)

Пример из документации по UV Примечание: Помните, что под Windows пакет Torch-CUDA для 3.13 версии питона ЕЩЕ НЕТ ВЫШЕЛ!!! Во избежание ошибок и путаниц в питонах первой командой (если у вас система еще не стояла) сделайте: Это, на мой взгляд, намного проще, чем через PIP. 1. Создадим новую папку "Комфи" на диске "c:\" (скопируйте и выполните следующую команду) 2. Скачайте файл по ссылке и поместите его в эту папку
https://github.com/Nestorchik/Dzen/releases/download/dzen/pyprojct.toml 3. Откроем файл в блокноте (или любом редакторе) и изменим в нем только то, что обведено зеленым, кроме версии питона. Это название проекта, описание и версия, это просто "для информации", не более. 4. У меня получилось так (5 строку я вообще удалил) Все, что ниже обведенного зеленым — НЕ ТРОГАЕМ!!!
Я там прописал самое трудное — установку TORCH-CUDA для карт NVIDIA!!! 5. Скачаем ComfyUI с Git командой: Следите за логом скачивания, чтобы убедиться, что связь с gitHub не оборвалась и все закачалось успе
Оглавление

Пример из документации по UV

Примечание:
Помните, что под Windows пакет Torch-CUDA для 3.13 версии питона ЕЩЕ НЕТ ВЫШЕЛ!!!

Во избежание ошибок и путаниц в питонах первой командой (если у вас система еще не стояла) сделайте:

  • uv python install 3.12

Разберем установку и запуск ComfyUI с помощью UV

Это, на мой взгляд, намного проще, чем через PIP.

1. Создадим новую папку "Комфи" на диске "c:\" (скопируйте и выполните следующую команду)

  • cd /d c:\ && md c:\Комфи && cd c:\Комфи
Должно получиться вот это
Должно получиться вот это

2. Скачайте файл по ссылке и поместите его в эту папку
https://github.com/Nestorchik/Dzen/releases/download/dzen/pyprojct.toml

Должно получиться вот так
Должно получиться вот так

3. Откроем файл в блокноте (или любом редакторе) и изменим в нем только то, что обведено зеленым, кроме версии питона. Это название проекта, описание и версия, это просто "для информации", не более.

-3

4. У меня получилось так (5 строку я вообще удалил)

Пропишем заголовки
Пропишем заголовки

Все, что ниже обведенного зеленым — НЕ ТРОГАЕМ!!!
Я там прописал самое трудное — установку
TORCH-CUDA для карт NVIDIA!!!

5. Скачаем ComfyUI с Git командой:

Должна появиться папка с "ComfyUI"
Должна появиться папка с "ComfyUI"

Следите за логом скачивания, чтобы убедиться, что связь с gitHub не оборвалась и все закачалось успешно!!!

6. Откроем в блокноте файл:

  • c:\Комфи\ComfyUI\requirements.txt

Красными стрелками отмечены те пакеты питона, которые у нас УЖЕ прописаны в скачанном "pyproject.toml", где прописана установка их CUDA-версий.

Файл открыт
Файл открыт

7. С каждой строкой из файла "requirements.txt" (кроме трех строк с торчами) выполняем команду:

  • uv add <строка>
Примечание
uv add - добавление пакета
uv remove - удаление пакета
Примечание: Все команды в терминале мы выполняем ПРИ ТЕКУШЕМ каталоге "c:\Комфи"

Можно "конкатировать" все команды в одну строку соединим команды знаками "&&", как тут (можете просто скопировать):

  • uv add torchsde && uv add numpy>=1.25.0 && uv add einops && uv add transformers>=4.28.1 && uv add tokenizers>=0.13.3 && uv add sentencepiece && uv add safetensors>=0.4.2 && uv add aiohttp && uv add pyyaml && uv add Pillow && uv add scipy && uv add tqdm && uv add psutil && uv add kornia>=0.7.1 && uv add spandrel && uv add soundfile

Вот такая колбаса получилась )

8. Копируем команду и выполняем ее в текущем c:\Комфи каталоге:

Результат выполнения команды
Результат выполнения команды

У нас автоматически создалось "виртуальное окружение" с именем ".venv" (привыкните работать именно с этим именем!!!) и .lock-файл с точным описанием каждого пакета, установленного в наше ".venv".

Созданное VENV и временные файлы
Созданное VENV и временные файлы

Файлы, отмеченные красным (нулевой длины) можно удалить.

9. Теперь командой:

  • uv add pip
    ... мы установим пакет "pip", которого в составе UV-питона нет
    (но об этом не знают остальные компоненты ComfyUI, которые будут его искать)
Установили PIP
Установили PIP

10. Теперь откроем файл "pyproject.toml"

В нем мы увидим, что UV сам внес в файл проекта все пакеты, которые проекту нужны. Это аналогия файлу "requirements.txt" в составе "ComfyUI".

-10
Примечание
UV создал нам VENV и все пакеты вписал в TOML-файл. Теперь, если мы удалим VENV вообще, ничего страшного, UV нам его восстановит при первом же к нему обращении.
Вы заметили, что мы не устанавливали сам питон, поскольку, раз у нас в "проекте" записана версия питона, а он у нас не установлен, UV его установит САМ нас даже не спрашивая.
Идеология такова: объекты, которые нужны для работы и могут быть созданы "на лету", автоматически создаются UV и, если надо, скачиваются и устанавливаются.
Создание ".venv" из "pyproject.toml" -> "uv sync", "uv run"

11. Установка Менеджера ComfyUI

Менеджер встал
Менеджер встал

12. Запуск ComfyUI

Поскольку у нас установлены сам ComfyUI, установлен его Менеджер, установлены все пакеты питона от ComfyUI + пакет PIP (который будут искать компоненты ComfyUI), то мы готовы к запуску.

Командная строка запуска через UV состоит из:

  • uv run <файл приложения.PY> <ключи криложения>

... то команда запуска ComfyUI со всеми рекомендуемыми ключами будет выглядеть так:

  • uv run c:\Комфи\ComfyUI\main.py --windows-standalone-build --front-end-version Comfy-Org/ComfyUI_frontend@latest
Запуск
Запуск

Вот собственно и все.

13. Теперь удалим ".venv" и выполним запуск ComfyUI еще раз

Произойдет запуск ComfyUI, но перед этим ".venv" будет создано и проинсталлировано по информации из "pyproject.toml" файла.

При этом создание VENV и установка в него ВСЕХ пакетов включая TORCH-CUDA займет... меньше 4 секунд.

Запуск
Запуск
Примечание
У меня все пакеты уже в кэше UV, который располагается по пути:
%HOMEPATH%\AppData\Local\uv\cache
Кэши UV и PIP находятся рядом
Кэши UV и PIP находятся рядом
UV не пользуется кэшем PIP, а создает свой собственный, что связано с идеологией поиска и выбора пакетов для установки.

Полный текст "pyproject.toml"

[project]
name = "ComfyUI"
version = "0.1.0"
description = "Установка ComfyUI с помощью UV"
requires-python = ">=3.12"
dependencies = [
"torch",
"torchvision",
"torchaudio",
"torchsde>=0.2.6",
"numpy>=2.2.2",
"einops>=0.8.0",
"transformers>=4.48.1",
"tokenizers>=0.21.0",
"sentencepiece>=0.2.0",
"safetensors>=0.5.2",
"aiohttp>=3.11.11",
"pyyaml>=6.0.2",
"pillow>=11.1.0",
"scipy>=1.15.1",
"tqdm>=4.67.1",
"psutil>=6.1.1",
"kornia>=0.8.0",
"spandrel>=0.4.1",
"soundfile>=0.13.0",
"pip>=24.3.1",
]
[[tool.uv.index]]
name = "pytorch-cu124"
url = "https://download.pytorch.org/whl/cu124"
explicit = true
[tool.uv.sources]
torch = [
{ index = "pytorch-cu124", marker = "platform_system != 'Darwin'"},
]
torchvision = [
{ index = "pytorch-cu124", marker = "platform_system != 'Darwin'"},
]
torchaudio = [
{ index = "pytorch-cu124", marker = "platform_system != 'Darwin'"},
]

BAT-файл инсталляции ComfyUI c UV V3

Примечания

Он все сделает сам. Сам загрузит и установит UV (антивирус может ругнуться!), сам скачает TOML-файл, сам скачает и установит ComfyUI + Manager, даже GIT не потребуется для установки (но потребуется потом Менеджеру комфи!), сам создаст ".venv", сам все запустит и сгенерирует "run.bat" файл.

Назначение LOCK-файла

uv создает uv.lock файл рядом с pyproject.toml.

uv.lock — это универсальный или кроссплатформенный файл блокировки, который фиксирует пакеты, которые будут установлены для всех возможных маркеров Python, таких как операционная система, архитектура и версия Python.

В отличие от pyproject.toml, который используется для указания общих требований проекта, файл блокировки содержит точные версии, которые установлены в среде проекта. Этот файл может быть использован в системе контроля версий, что позволяет выполнять воспроизводимые установки на разных машинах.

Файл блокировки гарантирует, что разработчики, работающие над проектом, используют согласованный набор версий пакетов. Кроме того, он гарантирует, что при развертывании проекта как приложения известен точный набор используемых версий пакетов.

Файл блокировки создается и обновляется во время вызовов uv, которые используют среду проекта, т. е.:

  • uv sync
  • uv run

Файл блокировки также может быть явно обновлен с помощью:

  • uv lock.

uv.lock является читаемым человеком файлом TOML, но управляется uv и не должен редактироваться вручную. В настоящее время не существует стандарта Python для lockfiles, поэтому формат этого файла специфичен для uv и не может использоваться другими инструментами.

Если необходимо интегрировать uv с другими инструментами или рабочими процессами, можно экспортировать uv.lock в requirements.txt формат с помощью:

  • uv export --format requirements-txt

Сгенерированный requirements.txt файл затем можно установить с помощью:

  • uv pip install

... или с помощью других инструментов, таких как pip.

Видео установки ComfyUI с помощью bat-файла:


https:\\github.com\Nestorchik\UV\releases\download\uv\install_ComfyUI_with_UV_V2.bat

Но тут установка пакетов идет через "uv pip install" и при такой установке ".venv" не может быть установлена в случае повреждения из-за отсутствия TONL-файла!

-15