jdx/mise · error

invalid python.precompiled_arch={arch:?}: this looks like a

Error message

invalid python.precompiled_arch={arch:?}: this looks like a target triple. Set python.precompiled_arch={precompiled_arch:?} and python.precompiled_os={precompiled_os:?} instead.

What it means

Settings validation for python precompiled overrides: python.precompiled_arch must be a bare architecture (e.g. x86_64). If the value parses as a full target triple (arch-os-...), mise rejects it and tells you to split it into precompiled_arch and precompiled_os. This prevents silently unmatchable platform filters.

Source

Thrown at src/plugins/core/python.rs:1357

}

fn python_precompiled_url_path(settings: &Settings) -> String {
    if cfg!(windows) || cfg!(linux) || cfg!(macos) {
        format!(
            "python-precompiled-{}-{}.gz",
            python_arch(settings),
            python_os(settings)
        )
    } else {
        "python-precompiled.gz".into()
    }
}

fn validate_python_precompiled_settings(settings: &Settings) -> Result<()> {
    if let Some(arch) = &settings.python.precompiled_arch
        && let Some((precompiled_arch, precompiled_os)) = split_python_precompiled_triple(arch)
    {
        bail!(
            "invalid python.precompiled_arch={arch:?}: this looks like a target triple. \
             Set python.precompiled_arch={precompiled_arch:?} and \
             python.precompiled_os={precompiled_os:?} instead."
        );
    }
    if let Some(arch) = &settings.python.precompiled_arch
        && looks_like_python_precompiled_os_value(arch)
    {
        bail!(
            "invalid python.precompiled_arch={arch:?}: this looks like an OS value. \
             Use python.precompiled_os={arch:?} instead, and set python.precompiled_arch \
             to an architecture such as \"x86_64\" or \"aarch64\"."
        );
    }
    Ok(())
}

fn split_python_precompiled_triple(value: &str) -> Option<(&str, &str)> {

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Split the triple: put the first component in python.precompiled_arch and the OS part in python.precompiled_os
  2. Unset python.precompiled_arch entirely to use the auto-detected platform

Example fix

// before
mise settings set python.precompiled_arch aarch64-unknown-linux-gnu

// after
mise settings set python.precompiled_arch aarch64
mise settings set python.precompiled_os linux
Defensive patterns

Strategy: validation

Validate before calling

arch=$(mise settings get python.precompiled_arch 2>/dev/null || true)
if [[ "$arch" == *-* ]]; then echo "triple detected; split into precompiled_arch + precompiled_os"; fi

Prevention

When it happens

Trigger: Setting `python.precompiled_arch = "x86_64-unknown-linux-gnu"` (or similar triple) via mise settings or env, then running `mise install python@...`; validated during install_version_.

Common situations: Copying a compiler target triple from rustc/gcc output into the setting; misunderstanding that the setting takes only the arch component.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


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