Pip Package Installer
Install Python packages from inside a ComfyUI workflow
- status_message
- success
The Pip Package Installer lets you run pip install from inside your workflow instead of dropping to a terminal. You pick a package from a dropdown, hit Run, and it shells out to pip, installs it into the same Python that's running ComfyUI, and hands you back a status message and a success flag. No API keys, no model files, no external dependencies - the whole pack is just two nodes that wrap Python's subprocess around pip.
Why would you want that? Real talk: for your machine, you almost never do - you'd install before starting ComfyUI and be done with it. Where it earns its keep is automation and sharing. A custom node you just pulled in needs a dependency its author forgot to put in requirements.txt; or you're handing a workflow to someone and want the setup steps baked into the graph so they can't miss one. It also handles the ugly case that trips people up most: packages that only exist on a custom index, like a CUDA build of torch. The default dropdown even ships with torch torchvision --index-url https://download.pytorch.org/whl/cu130, which is exactly that use case.
How it works
The node's dropdown is populated at startup from a plain text file, package_names.txt, in the pack's folder. Each non-comment line becomes a choice. Then it builds a pip command from whatever you selected:
- the package_name you picked (which can be one package, several on a line, or a line with pip flags like
--index-url- it parses withshlex, so quotes work), - force_reinstall →
--force-reinstall, - upgrade →
--upgrade.
It runs sys.executable -m pip install … via subprocess with a 10-minute timeout, captures stdout and stderr, and returns status_message (STRING) and success (BOOLEAN). Both outputs matter: the message is for humans, the boolean is for other nodes, so you could chain a "did it work?" gate onto whatever runs next. It's also an output node, so it sits at the end of the graph.
Installing and configuring
Install the pack once and both nodes come with it:
cd ComfyUI/custom_nodes
git clone https://github.com/marduk191/comfyui_wheel_installer.git
Then restart ComfyUI - the dropdown entries are read at load time, so after you edit package_names.txt you must restart to see new choices. If the file is missing, the node creates it for you and shows a "No packages configured" placeholder rather than crashing.
Common issues
- Empty or stale dropdown. The file is read once at startup. Edit the file, restart, done.
Failed to install package… non-zero exit status. Usually a typo, a version specifier that doesn't exist, no internet, or you picked a CUDA wheel for a torch that isn't installed. Check the ComfyUI console - the node prints the full pip output there.- Permission errors. On Linux/Mac inside a venv, make sure that venv is what's running ComfyUI.
sys.executabletargets the running Python, which is usually right, but a system-installed ComfyUI may need a user-level install. - Don't flip
force_reinstallandupgradetogether. The README is explicit: reinstall completely replaces the pinned version, upgrade bumps to latest. Pick one.
One more warning worth taking seriously. This is a node that executes arbitrary code on every run, into the shared environment every other node depends on. ComfyUI has no sandbox, and this community has been burned by malicious nodes before. Only add packages you trust and pin versions. Nine times out of ten the honest answer is "install it in your venv before you launch" - this node is for the tenth time, when you're automating or sharing.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| package_name | COMBO | numpy==1.24.0 | 7 options: numpy==1.24.0, pillow>=9.0.0, requests, transformers, opencv-python, torch torchvision torchaudio, +1 |
| force_reinstall | BOOLEAN | false | — |
| upgrade | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| status_message | STRING | — |
| success | BOOLEAN | — |