dbt-labs/dbt-core · error · anyhow
no ` ` wheel(s) in .
Error message
no `{}` wheel(s){suffix} in {}. What it means
run_publish discovered no wheel files matching the project's wheel name (and optional version filter) in the distribution directory, so there is nothing to upload to the registry — the build/pack step output is missing or was written elsewhere.
Solutions
- Run the wheel build/pack step before publish
- Pass --dist pointing at the directory that actually contains the built wheels
- Verify the version filter matches the built wheel filenames
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/dbt-ci/src/publish.rs:258 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/bcbea1e2b494dd0c.
Report an issue: GitHub.
Appendix: source
Thrown at crates/dbt-ci/src/publish.rs:258
&args.python_tag,
&args.abi_tag,
tmp.path(),
)
.await?;
(vec![(sdist, DistKind::Sdist)], Some(tmp))
} else {
let dist_dir = args
.dist
.clone()
.unwrap_or_else(|| cargo_workspace_root().join("target").join("wheels"));
let wheels = discover_wheels(&dist_dir, &spec.wheel_name, args.version.as_deref())?;
if wheels.is_empty() {
let suffix = args
.version
.as_deref()
.map(|v| format!(" at version {v}"))
.unwrap_or_default();
bail!(
"no `{}` wheel(s){suffix} in {}.",
spec.wheel_name,
dist_dir.display()
);
}
(
wheels.into_iter().map(|w| (w, DistKind::Wheel)).collect(),
None,
)
};
eprintln!(
"→ publishing {} `{}` artifact(s):",
dists.len(),
spec.wheel_name
);
for (path, _) in &dists {
if let Some(name) = path.file_name().and_then(|s| s.to_str()) {View on GitHub (pinned to 0267ce9170)