dbt Core is a Python package. Installed in its own virtual environment, it does not clash with other
Python tools on your Mac, and each project can stay on the version it was tested with. You install dbt
Core together with the adapter for your warehouse, dbt-snowflake in the examples.
Copy and paste
# 1. Python 3.10 or later; here 3.13 from Homebrew
brew install python@3.13
# 2. A virtual environment for dbt
python3.13 -m venv ~/dbt-venv
source ~/dbt-venv/bin/activate
python -m pip install --upgrade pip
# 3. dbt Core and the adapter, pinned to the 1.12 series
python -m pip install "dbt-core~=1.12.0" "dbt-snowflake~=1.12.0"
# 4. Check
dbt --version
Core:
- installed: 1.12.6
- latest: 1.12.6 - Up to date!
Plugins:
- snowflake: 1.12.4 - Up to date!
Start a project, or connect to an existing one:
dbt init shop # asks for the adapter and the connection details
cd shop
dbt debug # checks the profile and the connection
Which dbt you are installing
Since 2026 there are three packages with “dbt” in the name, and they install different things:
pip install |
Installs |
|---|---|
dbt-core and an adapter such as dbt-snowflake |
dbt Core 1.x, the Python engine; 1.12 is the current series |
dbt |
dbt v2, built on the Fusion engine; the default in dbt Labs’ install guide |
dbt-oss |
the open-source runtime of dbt v2 |
The guides on this site use dbt Core 1.12. Projects written for it are meant to run on v2 as well, and dbt Labs suggests upgrading to 1.12 and clearing its deprecation warnings first; see how to fix MissingArgumentsPropertyInGenericTestDeprecation. Keep each variant in its own virtual environment.
Things to know
- The adapter brings dbt Core along.
dbt-snowflakerequiresdbt-core1.x, so installing the adapter alone also works. Naming both, with~=1.12.0, keeps an upgrade from moving you to 1.13 without warning. - Activate the environment in every terminal.
command not found: dbtusually means the environment is not active. Runsource ~/dbt-venv/bin/activate, or add an alias to~/.zshrc. - VS Code. Choose
~/dbt-venv/bin/pythonas the interpreter, so the terminal and the extensions use the same dbt. - Not inside Airflow’s environment. If Airflow runs dbt, give dbt its own environment and call it by path; see how to run dbt Core from Airflow.
- Upgrading.
python -m pip install --upgrade "dbt-core~=1.12.0" "dbt-snowflake~=1.12.0"stays within 1.12. To move to a new series, change the version, read the changelog and rundbt parseto see the new deprecation warnings. - Other warehouses. Replace
dbt-snowflakewithdbt-postgres,dbt-bigquery,dbt-databricksordbt-duckdb. The rest is the same.
Tested on macOS with Homebrew Python 3.13, dbt Core 1.12.6 and dbt-snowflake 1.12.4.