If you have recently updated your system to the latest Python release (Python 3.14), you might run into a brick wall trying to use dbt. A classic symptom is getting a error message the second you try running dbt --version:
Why Does This Happen?
The modern data stack is very picky. dbt-core relies heavily on an underlying serialization library called mashumaro. Internal changes in Python 3.14 conflict with how older versions of this library look up schema fields, causing dbt to crash immediately.
Because data engineering frameworks (and their heavy database adapters like dbt-snowflake) require highly stable, pre-compiled binaries, running them on the bleeding edge of Python isn’t ideal. The cleanest fix is to downshift your project environment to a mature, supported version like Python 3.13 or 3.12.
Using uv (Astral’s lightning-fast Python package manager), we can cleanly handle this isolation without messing with your globally installed Python.
Here are the exact steps I took to solve this problem:
Step-by-Step Fix
- Clone your project or bootcamp repository: I was using a bootcamp repo.
git clone https://github.com/ayophilip/course.git
cd course
- Install
uv (if you haven’t already):
curl -LsSf https://astral.sh/uv/install.sh | sh
- Sync your project to a compatible Python version:
By passing the
--python flag, uv will automatically fetch Python 3.13 in the background and use it to build a localized, isolated virtual environment (.venv) that satisfies your pyproject.toml constraints:
- Clear your terminal’s path memory (Crucial if
dbt is still not found):
If you try running a command and Zsh stubbornly yells zsh: no such file or directory: /Users/[username]/.local/bin/dbt, your shell is clinging to an old, broken path shortcut. Wipe its memory instantly with:
- Activate your new virtual environment:
source .venv/bin/activate
- Verify the installation:
Your dbt commands will now run smoothly without the mashumaro bug throwing a wrench into your workflow.