PyO3/pyo3 · error
Abi3t builds are not supported on CPython targets before…
Error message
Abi3t builds are not supported on CPython targets before Python 3.15
What it means
abi3t is the free-threaded stable ABI introduced for CPython 3.15+. PyO3's build script rejects abi3t targets on older CPython because the ABI simply does not exist there. Abi3 (non-t) remains allowed on older versions.
Solutions
- Build against CPython 3.15+ if abi3t is required
- Use plain abi3 (not abi3t) for pre-3.15 targets
- Remove the abi3t feature/flag from Cargo.toml or the PYO3 abi config
- Check the resolved abi via pyo3-build-config output before building
Example fix
// before (Cargo.toml)
pyo3 = { version = "0.23", features = ["abi3-t"] } # with python3.13
// after
pyo3 = { version = "0.23", features = ["abi3"] } Defensive patterns
Strategy: validation
Validate before calling
import sys
using_abi3t = "abi3-t" in open("Cargo.toml").read() # or track your feature flags
if using_abi3t:
assert sys.version_info[:2] >= (3, 15), "abi3t requires CPython 3.15+" Prevention
- Only enable abi3t features when building against 3.15+ interpreters
- Use plain abi3 for broad wheel compatibility
- Gate abi3t features behind cargo feature flags enabled only in new-interpreter CI jobs
When it happens
Trigger: Building with a stable-abi config of StableAbi::Abi3t while the configured interpreter's version is below PY_3_15 (e.g. setting PYO3_USE_ABI3_FORWARD_COMPATIBILITY-style abi3t flags or pyo3 abi3-t features against Python 3.13/3.14).
Common situations: Enabling free-threaded abi3 feature flags in Cargo.toml while compiling against a pre-3.15 interpreter; attempting forward-compatible free-threaded wheels prematurely.
Related errors
- Cannot target an abi3t version below
- PyO3 does not support the free-threaded build of CPython…
- cannot set a minimum Python version
- Invalid config that sets both target_abi and abi3.
- Neither abi3 or abi3t features are enabled
AI-assisted analysis of PyO3/pyo3@ac9b6899d3 (2026-09-05).
Data as JSON: /api/errors/cddd0ffe47923554.
Report an issue: GitHub.
Appendix: source
Thrown at pyo3-ffi/build.rs:151
interpreter_config.target_abi().version() >= versions.min,
"the configured GraalPy interpreter version ({}) is lower than PyO3's minimum supported version ({})",
interpreter_config.target_abi().version(),
versions.min,
);
// GraalPy does not support abi3, so we cannot offer forward compatibility
if interpreter_config.target_abi().version() > versions.max {
let error = MaximumVersionExceeded::new(interpreter_config, versions.max);
return Err(error.finish().into());
}
}
PythonImplementation::RustPython => {}
}
if let PythonAbiKind::Stable(abi) = interpreter_config.target_abi().kind() {
match interpreter_config.target_abi().implementation() {
PythonImplementation::CPython => match abi {
StableAbi::Abi3t => {
ensure!(
interpreter_config.target_abi().version() >= PY_3_15,
"Abi3t builds are not supported on CPython targets before Python 3.15"
)
}
StableAbi::Abi3 => {}
},
PythonImplementation::PyPy => warn!(
"PyPy does not yet support {abi} so the build artifacts will be version-specific. \
See https://github.com/pypy/pypy/issues/3397 for more information."
),
PythonImplementation::GraalPy => warn!(
"GraalPy does not support {abi} so the build artifacts will be version-specific."
),
PythonImplementation::RustPython => {}
}
}
Ok(())View on GitHub (pinned to ac9b6899d3)