mirror of
https://github.com/Comfy-Org/ComfyUI-Manager.git
synced 2026-03-15 05:57:37 +08:00
Add --uv-compile flag to reinstall, update, fix, restore-snapshot, restore-dependencies, and install-deps commands. Each skips per-node pip installs and runs batch uv pip compile after all operations. Change CollectedDeps.sources type to dict[str, list[tuple[str, str]]] to store (pack_path, pkg_spec) per requester. On resolution failure, _run_unified_resolve() cross-references conflict packages with sources using word-boundary regex and displays which node packs requested each conflicting package. Update EN/KO user docs and DESIGN/PRD developer docs to cover the expanded commands and conflict attribution output. Strengthen unit tests for sources tuple format and compile failure attribution. Bump version to 4.1b3.
175 lines
9.9 KiB
Markdown
175 lines
9.9 KiB
Markdown
# `cm-cli`: ComfyUI-Manager CLI
|
|
|
|
`cm-cli` 는 ComfyUI를 실행시키지 않고 command line에서 ComfyUI-Manager의 여러가지 기능을 사용할 수 있도록 도와주는 도구입니다.
|
|
|
|
|
|
```
|
|
-= ComfyUI-Manager CLI (V2.24) =-
|
|
|
|
|
|
cm-cli [OPTIONS]
|
|
|
|
OPTIONS:
|
|
[install|reinstall|uninstall|update|disable|enable|fix] node_name ... ?[--channel <channel name>] ?[--mode [remote|local|cache]]
|
|
[install|reinstall|update|fix] node_name ... ?[--uv-compile]
|
|
[update|disable|enable|fix] all ?[--channel <channel name>] ?[--mode [remote|local|cache]]
|
|
[update|fix] all ?[--uv-compile]
|
|
[simple-show|show] [installed|enabled|not-installed|disabled|all|snapshot|snapshot-list] ?[--channel <channel name>] ?[--mode [remote|local|cache]]
|
|
save-snapshot ?[--output <snapshot .json/.yaml>]
|
|
restore-snapshot <snapshot .json/.yaml> ?[--pip-non-url] ?[--pip-non-local-url] ?[--pip-local-url] ?[--uv-compile]
|
|
restore-dependencies ?[--uv-compile]
|
|
install-deps <deps.json> ?[--channel <channel name>] ?[--mode [remote|local|cache]] ?[--uv-compile]
|
|
uv-compile
|
|
clear
|
|
```
|
|
|
|
## How To Use?
|
|
* `cm-cli` 명령으로 실행할 수 있습니다.
|
|
* 예를 들어 custom node를 모두 업데이트 하고 싶다면
|
|
* `cm-cli update all` 명령을 실행할 수 있습니다.
|
|
|
|
## Prerequisite
|
|
* ComfyUI 를 실행하는 python과 동일한 python 환경에서 실행해야 합니다.
|
|
* venv를 사용할 경우 해당 venv를 activate 한 상태에서 실행해야 합니다.
|
|
* portable 버전을 사용할 경우 run_nvidia_gpu.bat 파일이 있는 경로인 경우, 다음과 같은 방식으로 명령을 실행해야 합니다.
|
|
`.\python_embeded\python.exe -m cm_cli update all`
|
|
* ComfyUI 의 경로는 `COMFYUI_PATH` 환경 변수로 설정해야 합니다.
|
|
|
|
## Features
|
|
|
|
### 1. --channel, --mode
|
|
* 정보 보기 기능과 커스텀 노드 관리 기능의 경우는 --channel과 --mode를 통해 정보 DB를 설정할 수 있습니다.
|
|
* 예를 들어 `cm-cli update all --channel recent --mode remote`와 같은 명령을 실행할 경우, 현재 ComfyUI-Manager repo에 내장된 로컬의 정보가 아닌 remote의 최신 정보를 기준으로 동작하며, recent channel에 있는 목록을 대상으로만 동작합니다.
|
|
* --channel, --mode 는 `simple-show, show, install, uninstall, update, disable, enable, fix` 명령에서만 사용 가능합니다.
|
|
|
|
### 2. 관리 정보 보기
|
|
|
|
`[simple-show|show] [installed|enabled|not-installed|disabled|all|snapshot|snapshot-list] ?[--channel <channel name>] ?[--mode [remote|local|cache]]`
|
|
|
|
|
|
* `[show|simple-show]` - `show`는 상세하게 정보를 보여주며, `simple-show`는 간단하게 정보를 보여줍니다.
|
|
|
|
|
|
`cm-cli show installed` 와 같은 명령을 실행하면 설치된 커스텀 노드의 정보를 상세하게 보여줍니다.
|
|
```
|
|
-= ComfyUI-Manager CLI (V2.24) =-
|
|
|
|
FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json
|
|
[ ENABLED ] ComfyUI-Manager (author: Dr.Lt.Data)
|
|
[ ENABLED ] ComfyUI-Impact-Pack (author: Dr.Lt.Data)
|
|
[ ENABLED ] ComfyUI-Inspire-Pack (author: Dr.Lt.Data)
|
|
[ ENABLED ] ComfyUI_experiments (author: comfyanonymous)
|
|
[ ENABLED ] ComfyUI-SAI_API (author: Stability-AI)
|
|
[ ENABLED ] stability-ComfyUI-nodes (author: Stability-AI)
|
|
[ ENABLED ] comfyui_controlnet_aux (author: Fannovel16)
|
|
[ ENABLED ] ComfyUI-Frame-Interpolation (author: Fannovel16)
|
|
[ DISABLED ] ComfyUI-Loopchain (author: Fannovel16)
|
|
```
|
|
|
|
`cm-cli simple-show installed` 와 같은 명령을 이용해서 설치된 커스텀 노드의 정보를 간단하게 보여줍니다.
|
|
|
|
```
|
|
-= ComfyUI-Manager CLI (V2.24) =-
|
|
|
|
FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main/custom-node-list.json
|
|
ComfyUI-Manager
|
|
ComfyUI-Impact-Pack
|
|
ComfyUI-Inspire-Pack
|
|
ComfyUI_experiments
|
|
ComfyUI-SAI_API
|
|
stability-ComfyUI-nodes
|
|
comfyui_controlnet_aux
|
|
ComfyUI-Frame-Interpolation
|
|
ComfyUI-Loopchain
|
|
```
|
|
|
|
* `[installed|enabled|not-installed|disabled|all|snapshot|snapshot-list]`
|
|
* `enabled`, `disabled`: 설치된 커스텀 노드들 중 enable 되었거나, disable된 노드들을 보여줍니다.
|
|
* `installed`: enable, disable 여부와 상관없이 설치된 모든 노드를 보여줍니다
|
|
* `not-installed`: 설치되지 않은 커스텀 노드의 목록을 보여줍니다.
|
|
* `all`: 모든 커스텀 노드의 목록을 보여줍니다.
|
|
* `snapshot`: 현재 설치된 커스텀 노드의 snapshot 정보를 보여줍니다. `show`를 통해서 볼 경우는 json 출력 형태로 보여주며, `simple-show`를 통해서 볼 경우는 간단하게, 커밋 해시와 함께 보여줍니다.
|
|
* `snapshot-list`: ComfyUI-Manager/snapshots 에 저장된 snapshot 파일의 목록을 보여줍니다.
|
|
|
|
### 3. 커스텀 노드 관리 하기
|
|
|
|
`[install|reinstall|uninstall|update|disable|enable|fix] node_name ... ?[--channel <channel name>] ?[--mode [remote|local|cache]]`
|
|
|
|
* `cm-cli install ComfyUI-Impact-Pack ComfyUI-Inspire-Pack ComfyUI_experiments` 와 같이 커스텀 노드의 이름을 나열해서 관리 기능을 적용할 수 있습니다.
|
|
* 커스텀 노드의 이름은 `show`를 했을 때 보여주는 이름이며, git repository의 이름입니다.
|
|
(추후 nickname을 사용 가능하도록 업데이트할 예정입니다.)
|
|
|
|
`[update|disable|enable|fix] all ?[--channel <channel name>] ?[--mode [remote|local|cache]]`
|
|
|
|
* `update, disable, enable, fix` 기능은 all 로 지정 가능합니다.
|
|
|
|
* 세부 동작
|
|
* `install`: 지정된 커스텀 노드들을 설치합니다
|
|
* `reinstall`: 지정된 커스텀 노드를 삭제하고 재설치 합니다.
|
|
* `uninstall`: 지정된 커스텀 노드들을 삭제합니다.
|
|
* `update`: 지정된 커스텀 노드들을 업데이트합니다.
|
|
* `disable`: 지정된 커스텀 노드들을 비활성화합니다.
|
|
* `enable`: 지정된 커스텀 노드들을 활성화합니다.
|
|
* `fix`: 지정된 커스텀 노드의 의존성을 고치기 위한 시도를 합니다.
|
|
|
|
#### `--uv-compile` 플래그 (`install`, `reinstall`, `update`, `fix`)
|
|
|
|
`--uv-compile` 플래그를 사용하면 노드별 pip 설치를 건너뛰고, 모든 작업이 완료된 후 `uv pip compile`로 전체 의존성을 한 번에 일괄 해결합니다.
|
|
|
|
* `uv`가 설치된 환경에서만 동작합니다.
|
|
* 여러 노드 팩 간의 의존성 충돌을 방지합니다.
|
|
* 해결 실패 시 충돌 패키지와 해당 패키지를 요청한 노드 팩 목록을 표시합니다.
|
|
* `reinstall --uv-compile`은 `--no-deps`와 동시에 사용할 수 없습니다.
|
|
|
|
```bash
|
|
cm-cli install ComfyUI-Impact-Pack ComfyUI-Inspire-Pack --uv-compile
|
|
cm-cli update all --uv-compile
|
|
cm-cli fix ComfyUI-Impact-Pack --uv-compile
|
|
```
|
|
|
|
|
|
### 4. 스냅샷 관리 기능
|
|
* `cm-cli save-snapshot ?[--output <snapshot .json/.yaml>]`: 현재의 snapshot을 저장합니다.
|
|
* --output 으로 임의의 경로에 .yaml 파일과 format으로 저장할 수 있습니다.
|
|
* `cm-cli restore-snapshot <snapshot .json/.yaml>`: 지정된 snapshot으로 복구합니다.
|
|
* snapshot 경로에 파일이 존재하는 경우 해당 snapshot을 로드합니다.
|
|
* snapshot 경로에 파일이 존재하지 않는 경우 묵시적으로, ComfyUI-Manager/snapshots 에 있다고 가정합니다.
|
|
* `--pip-non-url`: PyPI 에 등록된 pip 패키지들에 대해서 복구를 수행
|
|
* `--pip-non-local-url`: web URL에 등록된 pip 패키지들에 대해서 복구를 수행
|
|
* `--pip-local-url`: local 경로를 지정하고 있는 pip 패키지들에 대해서 복구를 수행
|
|
* `--user-directory`: 사용자 디렉토리 설정
|
|
* `--restore-to`: 복구될 커스텀 노드가 설치될 경로. (이 옵션을 적용할 경우 오직 대상 경로에 설치된 custom nodes만 설치된 것으로 인식함.)
|
|
|
|
### 5. 의존성 설치
|
|
|
|
`restore-dependencies ?[--uv-compile]`
|
|
|
|
* `ComfyUI/custom_nodes` 하위 경로에 커스텀 노드들이 설치되어 있긴 하지만, 의존성이 설치되지 않은 경우 사용할 수 있습니다.
|
|
* Colab과 같이 cloud instance를 새로 시작하는 경우 의존성 재설치 및 설치 스크립트가 재실행되어야 하는 경우 사용합니다.
|
|
* ComfyUI를 재설치할 경우, custom_nodes 경로만 백업했다가 재설치할 경우 활용 가능합니다.
|
|
* `--uv-compile` 플래그를 사용하면 노드별 pip 설치를 건너뛰고 일괄 해결합니다.
|
|
|
|
### 6. 의존성 파일로 설치
|
|
|
|
`install-deps <deps.json> ?[--channel <channel name>] ?[--mode [remote|local|cache]] ?[--uv-compile]`
|
|
|
|
* 의존성 spec 파일(`.json`) 또는 워크플로우 파일(`.png`/`.json`)에 명시된 커스텀 노드를 설치합니다.
|
|
* `--uv-compile` 플래그를 사용하면 모든 노드 설치 후 일괄 의존성 해결을 수행합니다.
|
|
|
|
### 7. uv-compile
|
|
|
|
`uv-compile ?[--user-directory <path>]`
|
|
|
|
* 설치된 모든 커스텀 노드 팩의 의존성을 `uv pip compile`로 일괄 해결하고 설치합니다.
|
|
* ComfyUI를 재시작하지 않고 의존성 환경을 복구하거나 초기 설정 시 활용할 수 있습니다.
|
|
* `uv`가 설치된 환경에서만 동작합니다.
|
|
|
|
```bash
|
|
cm-cli uv-compile
|
|
cm-cli uv-compile --user-directory /path/to/comfyui
|
|
```
|
|
|
|
### 8. clear
|
|
|
|
GUI에서 install, update를 하거나 snapshot을 restore하는 경우 예약을 통해서 다음번 ComfyUI를 실행할 경우 실행되는 구조입니다. `clear` 는 이런 예약 상태를 clear해서, 아무런 사전 실행이 적용되지 않도록 합니다.
|