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

  1. Reinstall pipx: `mise use pipx@latest` (or your preferred installer), then verify with `mise which pipx` and `pipx --version`.
  2. Check the configured executable path for broken symlinks (`ls -l $(mise which pipx)`) and fix or repoint the pipx executable option.
  3. Re-run the install in a fresh shell so PATH and mise shims are consistent.
  4. 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

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


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/4c3d4fd0682619e6. Report an issue: GitHub.