jdx/mise · error
pipx was found during dependency validation but could not be
Error message
pipx was found during dependency validation but could not be launched while installing {}.\n\nVerify the configured executable with `mise which pipx` and `pipx --version`. If pipx is unavailable, reinstall it with `mise use pipx@latest`. What it means
Thrown by the pipx backend's `install_version_` when dependency validation found a pipx executable, but actually launching it during install failed with an io NotFound error (binary vanished, is not executable, or is a broken shim). mise distinguishes this from pipx simply being absent at validation time and asks the user to verify the configured executable.
Source
Thrown at src/backend/pipx.rs:456
&["install", &package_request],
self,
&tv,
&ctx.ts,
ctx.pr.as_ref(),
)
.await?;
cmd = cmd.args(Self::pip_uploaded_prior_to_args(ctx.before_date));
if let Some(args) = options.pipx_args() {
cmd = cmd.args(shell_words::split(args)?);
}
if let Err(err) = cmd.execute() {
let not_found = err.chain().any(|cause| {
cause
.downcast_ref::<std::io::Error>()
.is_some_and(|io| io.kind() == std::io::ErrorKind::NotFound)
});
if not_found {
bail!(
"pipx was found during dependency validation but could not be launched while installing {}.\n\nVerify the configured executable with `mise which pipx` and `pipx --version`. If pipx is unavailable, reinstall it with `mise use pipx@latest`.",
self.ba()
);
}
return Err(err);
}
}
// Fix venv Python symlink to use minor version path
// This allows patch upgrades (3.12.1 → 3.12.2) to work without reinstalling
let pkg_name = self.tool_name();
fix_venv_python_symlink(&tv.install_path(), &pkg_name)?;
Ok(tv)
}
fn resolve_lockfile_options(
&self,View on GitHub (pinned to afd2eddd3a)
Solutions
- Reinstall pipx: `mise use pipx@latest` (or your preferred installer), then verify with `mise which pipx` and `pipx --version`.
- Check the configured executable path for broken symlinks (`ls -l $(mise which pipx)`) and fix or repoint the pipx executable option.
- Re-run the install in a fresh shell so PATH and mise shims are consistent.
- If pipx is quarantined/removed by security software, re-add an exclusion and reinstall.
Defensive patterns
Strategy: retry
Validate before calling
# verify pipx is resolvable AND launchable before installing
exe=$(mise which pipx) && "$exe" --version || { mise use -g pipx@latest; } Try / catch
try { await $`mise install` } catch (e) { if (String(e).includes('could not be launched')) { await $`mise use -g pipx@latest`; await $`mise install`; } else throw e; } Prevention
- Run installs from a fresh shell with consistent PATH/shims
- Don't uninstall/upgrade pipx while another mise process runs
- Check pipx executable symlinks for dangling targets
When it happens
Trigger: During `mise install` of a pipx package, mise spawned the pipx executable that passed earlier dependency validation, and the spawn (or an error in the chain) returned `std::io::ErrorKind::NotFound` — e.g. the executable was removed between validation and install, PATH changed mid-run, or the resolved path is a dangling symlink/broken shim.
Common situations: pipx managed by mise was uninstalled or upgraded (symlink replaced) while another mise process ran; a shim points to a removed Python venv; antivirus/quarantine removed the binary; PATH differs between the shell that validated and the environment install runs in.
Related errors
- {reason}.\n\n{instructions}\n\nIf pipx is already installed,
- pipx is required to install {} but was not found. {instruct
- the packslip gives no download URL for {}
- the packslip names an artifact {:?}, which is not a plain fi
- resolved pkgx package {name}@{version} does not satisfy {req
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/4c3d4fd0682619e6.
Report an issue: GitHub.