mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-11 06:30:03 +00:00
fix(hyperframes-media): install MusicGen deps via python3 -m pip, not bare pip (#1894)
pipInstall() spawned a bare "pip" binary. Many Homebrew/system Python installs expose only python3/pip3 on PATH, so the spawn silently ENOENTs and the documented "auto-installed on demand" local MusicGen path never actually installs anything - the failure is invisible since spawnSync's status just comes back non-zero like any other install failure. Switched to `python3 -m pip install`, matching this same file's own pyOk() convention of always invoking python3 explicitly. This also closes a second latent bug: a bare pip/pip3 could resolve to a different Python installation than the python3 binary pyOk() probes against if more than one is on PATH, so `-m pip` guarantees the install lands in the exact interpreter being checked. Manually verified `python3 -m pip --version` succeeds in this environment. No automated test added - this is a literal command-array swap with no new branching logic, and spawnSync is a named import from node:child_process with no clean mocking path available without a larger refactor disproportionate to the fix's size.
This commit is contained in:
@@ -30,8 +30,15 @@ function pyOk(probe) {
|
||||
const { cmd, args } = pythonInvocation(["-c", probe]);
|
||||
return spawnSync(cmd, args, { stdio: "ignore" }).status === 0;
|
||||
}
|
||||
// `python -m pip`, not a bare `pip` binary: a Homebrew/system Python often
|
||||
// exposes only `python3`/`pip3` on PATH, so a plain `pip` spawn silently
|
||||
// no-ops (ENOENT) and the documented "auto-installed on demand" path never
|
||||
// actually installs. `-m pip` also guarantees the packages land in the SAME
|
||||
// interpreter pyOk() probes — a bare `pip`/`pip3` could resolve to a
|
||||
// different Python installation than `python3` if more than one is on PATH.
|
||||
function pipInstall(deps) {
|
||||
return spawnSync("pip", ["install", "-q", ...deps], { stdio: "ignore" }).status === 0;
|
||||
const { cmd, args } = pythonInvocation(["-m", "pip", "install", "-q", ...deps]);
|
||||
return spawnSync(cmd, args, { stdio: "ignore" }).status === 0;
|
||||
}
|
||||
|
||||
// ── retrieval (HeyGen music library) ──────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user