{"record":{"id":"898a4f41e2c516af","repo":"jdx/mise","slug":"pipx-was-found-during-dependency-validation-but-could-not-be","errorCode":null,"errorMessage":"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`.","messagePattern":"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`\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/backend/pipx.rs","lineNumber":696,"sourceCode":"                &[\"install\", &package_request],\n                self,\n                &tv,\n                &ctx.ts,\n                ctx.pr.as_ref(),\n            )\n            .await?;\n            cmd = cmd.args(Self::pip_uploaded_prior_to_args(ctx.before_date));\n            if let Some(args) = options.pipx_args() {\n                cmd = cmd.args(shell_words::split(args)?);\n            }\n            if let Err(err) = cmd.execute() {\n                let not_found = err.chain().any(|cause| {\n                    cause\n                        .downcast_ref::<std::io::Error>()\n                        .is_some_and(|io| io.kind() == std::io::ErrorKind::NotFound)\n                });\n                if not_found {\n                    bail!(\n                        \"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`.\",\n                        self.ba()\n                    );\n                }\n                return Err(err);\n            }\n        }\n\n        // Fix venv Python symlink to use minor version path\n        // This allows patch upgrades (3.12.1 → 3.12.2) to work without reinstalling\n        let pkg_name = self.tool_name();\n        fix_venv_python_symlink(&tv.install_path(), &pkg_name)?;\n\n        Ok(tv)\n    }\n\n    fn resolve_lockfile_options(\n        &self,","sourceCodeStart":678,"sourceCodeEnd":714,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/backend/pipx.rs#L678-L714","documentation":"install_version_ detects that launching pipx failed with a NotFound I/O error after pipx had passed the earlier dependency-validation check, i.e. pipx was discoverable during validation but its configured executable could not actually be spawned. The backend wraps this inconsistency in a diagnostic message instead of surfacing the raw error.","triggerScenarios":"During install, spawning the pipx process yields std::io::ErrorKind::NotFound anywhere in the error chain (checked via downcast) — e.g. the configured pipx path vanished, its interpreter shebang points to a missing Python, or PATH changed between validation and spawn.","commonSituations":"pipx shim/script whose shebang references a deleted or upgraded-away Python interpreter; broken pipx install (missing venv); mise's pipx executable configuration pointing to a stale path; PATH differences inside mise vs. shell.","solutions":["Reinstall pipx: `mise use pipx@latest`","Check the configured executable with `mise which pipx` and run `pipx --version` to confirm it launches","Fix the underlying interpreter if the shebang/venv is broken (recreate the venv or reinstall Python)","Install uv (`mise use uv@latest`) to bypass the pipx spawn path entirely"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// verify pipx actually launches, not just that it resolves\nconst out = await $`pipx --version`.nothrow();\nif (out.exitCode !== 0) throw new Error(\"pipx found but not launchable; reinstall with mise use pipx@latest\");","typeGuard":null,"tryCatchPattern":"try { await $`mise install pipx:ruff` } catch (e) {\n  if (/could not be launched/.test(e.message)) { await $`mise use pipx@latest`; await $`mise install pipx:ruff`; }\n  else throw e;\n}","preventionTips":["After Python upgrades, recreate the venv backing pipx or reinstall pipx","Check pipx shebangs point to an existing interpreter","Run `pipx --version` in health checks; discovery alone doesn't prove launchability"],"tags":["pipx","process-spawn","not-found","install"],"backgroundTag":"command-not-found","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}