Wheel Installer
The node that installs a .whl from a URL, Nunchaku-style
- status_message
- success
If you've ever set up Flux Kontext with Nunchaku, you've met this pattern: a custom node that grabs a prebuilt .whl file from a URL and pip-installs it straight into your ComfyUI environment. The Wheel Installer from marduk191/comfyui_wheel_installer is a generic, standalone version of exactly that. Point it at a wheel URL, it runs pip install <url>, and tells you whether it worked.
It's a thin node - a dropdown, one toggle, two outputs - and that's the appeal. When a node needs a binary wheel that isn't on PyPI (think NVIDIA quantized kernels, CUDA-specific builds, +torch2.x tagged wheels hosted on HuggingFace), this is a lot friendlier than digging through someone's README for the right pip install incantation.
How it works
On startup the node reads wheel_urls.txt in its folder. Each non-comment line becomes an entry in the wheel_url dropdown - so unlike the sibling Pip node, you curate the exact URLs yourself, and they should point directly at .whl files. Hit Run and it builds sys.executable -m pip install <url> in a subprocess, with a 5-minute timeout (wheels are usually smaller and quicker than full pip trees). force_reinstall adds --force-reinstall, handy when you're swapping in a newer build of something already installed. It captures pip's output and returns status_message (STRING) - like "Successfully installed: nunchaku-0.3.1+torch2.1-cp311-linux_x86_64.whl" - plus success (BOOLEAN) you can wire into the rest of the graph. It's an output node, so it ends the branch.
Note the dropdown shows the full URL as the choice; the filename only gets extracted for the success message. The README says otherwise, but the code is the truth here.
Installing and configuring
cd ComfyUI/custom_nodes
git clone https://github.com/marduk191/comfyui_wheel_installer.git
Restart ComfyUI, then add the Wheel Installer node (it's under utils). Edit wheel_urls.txt, one URL per line, # for comments, and restart again - like the Pip node, the dropdown only refreshes at load time. There are no Python dependencies to install; the pack is pure stdlib and ships nothing.
The failure mode that bites everyone
The most common real-world problem with this whole wheel-installer genre isn't the node - it's the wheel. People paste Failed to install … returned non-zero exit status 1 into r/comfyui all the time, and nine times out of ten the cause is a version or platform mismatch: the wheel was built for a different Python (the cp311 in the filename), a different OS, or a different torch/CUDA build (the +torch2.1 tag). A wheel for torch 2.1 dies instantly in a torch 2.4 environment, and pip's error message won't say that in so many words. So before you blame the node: confirm the wheel's cpXY matches your Python, the platform tag matches your OS, and for torch-adjacent wheels that the torch version and CUDA build line up.
Also worth repeating because this pack installs on every run you execute: pip installs execute code, and this community has seen malicious nodes. Only feed it HTTPS URLs from sources you trust, and be careful with force_reinstall - it can silently downgrade something another node depends on. Honest verdict: a niche convenience, mostly relevant if you're replicating a Nunchaku-style setup. For one-off installs, the terminal is still faster. For "make this workflow self-installing," it's genuinely handy.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| wheel_url | COMBO | https://example.com/packages/numpy-1.24.0-cp311-cp311-win_amd64.whl | 3 options: https://example.com/packages/numpy-1.24.0-cp311-cp311-win_amd64.whl, https://example.com/packages/torch-2.0.0-cp311-cp311-linux_x86_64.whl, https://example.com/packages/pillow-9.5.0-cp311-cp311-manylinux_2_17_x86_64.whl |
| force_reinstall | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| status_message | STRING | — |
| success | BOOLEAN | — |