Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] dbtCore - after upgrading, can't run DBT #10135

Open
2 tasks done
moseleyi opened this issue May 13, 2024 · 57 comments
Open
2 tasks done

[Bug] dbtCore - after upgrading, can't run DBT #10135

moseleyi opened this issue May 13, 2024 · 57 comments
Labels
bug Something isn't working

Comments

@moseleyi
Copy link

Is this a new bug in dbt-core?

  • I believe this is a new bug in dbt-core
  • I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior

I installed dbt-core, bigquery, and postgres, and then when typing dbt --version I get this error:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\___\AppData\Roaming\Python\Python312\Scripts\dbt.exe\__main__.py", line 4, in <module>
  File "C:\Users\___t\AppData\Roaming\Python\Python312\site-packages\dbt\cli\__init__.py", line 1, in <module>
    from .main import cli as dbt_cli  # noqa
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\___\AppData\Roaming\Python\Python312\site-packages\dbt\cli\main.py", line 14, in <module>
    from dbt.cli import requires, params as p
  File "C:\Users\___\AppData\Roaming\Python\Python312\site-packages\dbt\cli\requires.py", line 10, in <module>
    from dbt.adapters.factory import adapter_management, register_adapter, get_adapter
ModuleNotFoundError: No module named 'dbt.adapters.factory'

This is after installing bigquery, postgres,

Expected Behavior

Should show the version of dbt packages

Steps To Reproduce

  1. Install dbt-core
  2. Run dbt --version

Relevant log output

No response

Environment

- OS: Windows
- Python: 3.12
- dbt: 1.8

Which database adapter are you using with dbt?

No response

Additional Context

No response

@moseleyi moseleyi added bug Something isn't working triage labels May 13, 2024
@jtcohen6
Copy link
Contributor

@moseleyi Could you run pip freeze | grep 'dbt' and report back with the exact versions of Python packages that you have installed?

Also - you might try installing all of these by name, along with the --upgrade flag, and see if that resolves the issue for you:

pip install --upgrade dbt-core dbt-bigquery dbt-postgres

@rubenhelsloot
Copy link

@jtcohen6 I have the same issue, this is the output you asked for:

❯ pip freeze | grep 'dbt'
dbt-adapters==1.1.1
dbt-common==1.0.4
dbt-core==1.8.0
dbt-extractor==0.5.1
dbt-postgres==1.8.0
dbt-semantic-interfaces==0.5.1
sqlfluff-templater-dbt==3.0.6

The issue persists when I uninstall and then reinstall dbt-core and dbt-postgres. FWIW I'm using poetry.

@jtcohen6
Copy link
Contributor

Thanks @rubenhelsloot! Are you also using Python 3.12?

@moseleyi
Copy link
Author

My output:

dbt-adapters==1.1.1
dbt-common==1.0.4
dbt-core==1.8.0
dbt-extractor==0.5.1
dbt-postgres==1.8.0
dbt-semantic-interfaces==0.5.1

Some people in my team got it working but maybe because it was clean install, they never had to use python packages before. Perhaps some dependencies of dbt are not updated with the latest update?

@moseleyi
Copy link
Author

Surprisingly dbt 1.7.13 works fine with Python 3.12.3 - I checked on my other laptop

@dbeatty10
Copy link
Contributor

@rubenhelsloot! Are you also using Windows?

@moseleyi Which commands are you using to installing dbt? Are you using a virtual environment with venv or Poetry?

The following files and commands worked for me:

  • on macOS
  • using venv
  • with Python 3.12.3 (managed by pyenv)

Create this file:

requirements.txt

dbt-adapters==1.1.1
dbt-common==1.0.4
dbt-core==1.8.0
dbt-extractor==0.5.1
dbt-postgres==1.8.0
dbt-semantic-interfaces==0.5.1

Run these commands:

python3 -m venv env
source env/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
source env/bin/activate
python --version
dbt --version
deactivate

Output:

Python 3.12.3
Core:
  - installed: 1.8.0
  - latest:    1.8.0 - Up to date!

Plugins:
  - postgres: 1.8.0 - Up to date!

@leoebfolsom
Copy link
Contributor

leoebfolsom commented May 14, 2024

In case helpful, when I upgraded to dbt-core 1.8, I had the same issue on Python 3.9.6 (OS: Mac Ventura 13.4.1), and it was resolved on upgrade to Python 3.12.3.

@moseleyi
Copy link
Author

I don't use venv nor poetry. At first I just upgraded pip install dbt-core --upgrade and the adapters. That didn't work so I tried uninstalling everything and installing again using different commands (core + adapters in one command, adapter only etc.)

All of them produce this error

@troyharvey
Copy link

Reproduced with Python 3.10.

$ python --version
Python 3.10.14

$ dbt deps
Traceback (most recent call last):
  File "/opt/homebrew/Caskroom/miniconda/base/envs/ds-redshift/bin/dbt", line 5, in <module>
    from dbt.cli.main import cli
  File "/opt/homebrew/Caskroom/miniconda/base/envs/ds-redshift/lib/python3.10/site-packages/dbt/cli/__init__.py", line 1, in <module>
    from .main import cli as dbt_cli  # noqa
  File "/opt/homebrew/Caskroom/miniconda/base/envs/ds-redshift/lib/python3.10/site-packages/dbt/cli/main.py", line 14, in <module>
    from dbt.cli import requires, params as p
  File "/opt/homebrew/Caskroom/miniconda/base/envs/ds-redshift/lib/python3.10/site-packages/dbt/cli/requires.py", line 10, in <module>
    from dbt.adapters.factory import adapter_management, register_adapter, get_adapter
ModuleNotFoundError: No module named 'dbt.adapters.factory'

@paulbakkerbloom
Copy link

Had the same issue with Python 3.9.18 -> solved when I upgraded to Python 3.11.6

I use poetry and upgraded through poetry update

dbt-adapters                          1.1.1             The set of adapter ...
dbt-bigquery                          1.8.0             The Bigquery adapte...
dbt-common                            1.0.4             The shared common u...
dbt-core                              1.8.0             With dbt, data anal...
dbt-extractor                         0.5.1             A tool to analyze a...
dbt-semantic-interfaces               0.5.1             The shared semantic...
dbt-tests-adapter                     1.8.0             The set of reusable...

@moseleyi
Copy link
Author

I was hoping it was about python issue but seems like it's not. It could be a dependency that should be updated with dbt core update but isn't being forced to update?

@moseleyi
Copy link
Author

I also found this: AltimateAI/vscode-dbt-power-user#1029 but we all have dbt-adapters installed

@brabster
Copy link

A bit more info: I had the same problem, I can reproduce at will, Python 3.11.8:

Install dbt-bigquery==1.7.7 into a clean venv, working fine (via pip install -U -r requirements.txt)

Bump to dbt-bigquery>=1.7.7 and same pip command, broken

 File "/workspaces/pypi_vulnerabilities/venv/lib/python3.11/site-packages/dbt/cli/requires.py", line 10, in <module>
    from dbt.adapters.factory import adapter_management, register_adapter, get_adapter
ModuleNotFoundError: No module named 'dbt.adapters.factory'

Delete venv, same requirements.txt, pip install - get 1.8, works fine.

In the broken venv, the factory.py (and other) files in dbt/adapters is missing.

image

You should be able to reproduce these steps exactly with a codespace off https://github.com/brabster/pypi_vulnerabilities

@dbeatty10
Copy link
Contributor

Thanks for this info @brabster 🏅

Could you share the contents of your requirements.txt file also?

@brabster
Copy link

@dbeatty10
It's just the dbt-bigquery dependency. Originally as per repo. https://github.com/brabster/pypi_vulnerabilities/blob/main/requirements.txt

Clean venv, set to dbt-bigquery==1.7.7 to force pre-1.8.0 and install. Works.
Then set to dbt-bigquery>=1.7.7 to upgrade to latest. Broken
Clean venv, install same requirements. Works

@jtcohen6
Copy link
Contributor

@brabster If in step (2), you run pip install --upgrade dbt-core dbt-common dbt-adapters dbt-bigquery, do you still see the error?

(I'm hoping this might be because the underlying dependencies are not being upgraded, when they should be, but I'm not 100% positive: #10123)

@dbeatty10
Copy link
Contributor

Thank you @brabster ! 🏅 I was able to reproduce the error using your description. See "reprex" below for full details.

@jtcohen6 when I tried running pip install --upgrade dbt-core dbt-common dbt-adapters dbt-bigquery, it still gave the same error.

Reprex

Create requirements files for both 1.7 and 1.8:

cat << EOF > requirements_1.7.txt
dbt-bigquery==1.7.7
EOF
cat << EOF > requirements_1.8.txt
dbt-adapters==1.1.1
dbt-common==1.0.4
dbt-core==1.8.0
dbt-extractor==0.5.1
dbt-bigquery==1.8.0
dbt-semantic-interfaces==0.5.1
EOF

✅ Create a fresh virtual environment and install the requirements for 1.7:

rm -rf env
python3 -m venv env
source env/bin/activate
python -m pip install -r requirements_1.7.txt
source env/bin/activate
dbt --version

❌ Try upgrading by installing the requirements for 1.8 in the same virtual environment:

python -m pip install -r requirements_1.8.txt
source env/bin/activate
dbt --version

Get an error like the following:

    from dbt.adapters.factory import adapter_management, register_adapter, get_adapter
ModuleNotFoundError: No module named 'dbt.adapters.factory'

✅ Try upgrading by installing the requirements for 1.8 in a fresh virtual environment:

deactivate
rm -rf env
python3 -m venv env
source env/bin/activate
python -m pip install -r requirements_1.8.txt
source env/bin/activate
dbt --version

@dbeatty10
Copy link
Contributor

dbeatty10 commented May 16, 2024

When I got the same error as the reported above, the following workaround resolved it for me:

python -m pip uninstall -y dbt-adapters
python -m pip install --upgrade dbt-core dbt-common dbt-adapters
dbt --version

The pip uninstall -y dbt-adapters is the important part.

The 2nd command can be replaced with whichever command you use to install the requirements for dbt 1.8.

@dbeatty10
Copy link
Contributor

@Evelyn-yx-Li We're not aware of anything we can do about this that wouldn't risk breaking other things. So if you're getting this error in your GitHub Actions, then we'd recommend adding a workaround to handle it.

@elyobo
Copy link

elyobo commented Jun 4, 2024

@Evelyn-yx-Li it seems that this is explicitly an upgrading problem, so possibly it's related to caching dependency installs e.g. if you're doing so via actions/setup-python; maybe try disabling if so?

That said, we're caching poetry dependencies in that way and haven't run into issues, it was just local developer installs that seemed to have problems.

@brabster
Copy link

brabster commented Jun 6, 2024

@elyobo confident this is the underlying reason #10135 (comment). If so it is explicitly an upgrading problem, because of the order in which packages are cleaned up and dbt's placing multiple modules into a shared directory structure. Explains the variety of issues reported.

@Evelyn-yx-Li
Copy link

Hi, I've tried the solutions above in our prod, but it shows "command not found". Both force-reinstall and uninstall dbt-adapters. But it works well within local and CI.

------------------------------------------------------------------------------------------------------------------------
DBT VERSION
------------------------------------------------------------------------------------------------------------------------
Checking DBT version...
dbt -v
./dbt-forklift.sh: line 49: dbt: command not found

------------------------------------------------------------------------------------------------------------------------
SET UP DBT
------------------------------------------------------------------------------------------------------------------------
Installing DBT dependencies...
pip uninstall -y dbt-adapters
WARNING: Skipping dbt-adapters as it is not installed.
pyenv: cannot rehash: /usr/local/.pyenv/shims isn't writable
pip install dbt-core dbt-bigquery==1.8.1 dbt-redshift==1.8.0 dbt-snowflake==1.8.3
Defaulting to user installation because normal site-packages is not writeable
Collecting dbt-core
  Using cached dbt_core-1.8.2-py3-none-any.whl.metadata (3.9 kB)
Collecting dbt-bigquery==1.8.1
  Using cached dbt_bigquery-1.8.1-py3-none-any.whl.metadata (3.2 kB)
Collecting dbt-redshift==1.8.0
  Using cached dbt_redshift-1.8.0-py3-none-any.whl.metadata (3.2 kB)
Collecting dbt-snowflake==1.8.3
  Using cached dbt_snowflake-1.8.3-py3-none-any.whl.metadata (3.2 kB)
Collecting dbt-common<2.0,>=1.0.4 (from dbt-bigquery==1.8.1)
  Using cached dbt_common-1.3.0-py3-none-any.whl.metadata (5.3 kB)
Collecting dbt-adapters<2.0,>=1.1.1 (from dbt-bigquery==1.8.1)
  Using cached dbt_adapters-1.2.1-py3-none-any.whl.metadata (2.5 kB)
Collecting google-cloud-bigquery<4.0,>=3.0 (from google-cloud-bigquery[pandas]<4.0,>=3.0->dbt-bigquery==1.8.1)
  Using cached google_cloud_bigquery-3.24.0-py2.py3-none-any.whl.metadata (8.9 kB)
Collecting google-cloud-storage~=2.4 (from dbt-bigquery==1.8.1)
  Using cached google_cloud_storage-2.17.0-py2.py3-none-any.whl.metadata (6.6 kB)
Collecting google-cloud-dataproc~=5.0 (from dbt-bigquery==1.8.1)
  Using cached google_cloud_dataproc-5.9.3-py2.py3-none-any.whl.metadata (5.2 kB)
Collecting google-api-core>=2.11.0 (from dbt-bigquery==1.8.1)
  Using cached google_api_core-2.19.0-py3-none-any.whl.metadata (2.7 kB)
Collecting dbt-postgres~=1.8.0 (from dbt-redshift==1.8.0)
  Using cached dbt_postgres-1.8.1-py3-none-any.whl.metadata (3.4 kB)
Collecting redshift-connector!=2.0.914,<2.0.918,>=2.0.913 (from dbt-redshift==1.8.0)
  Using cached redshift_connector-2.0.917-py3-none-any.whl.metadata (66 kB)
Collecting sqlparse<0.6.0,>=0.5.0 (from dbt-redshift==1.8.0)
  Using cached sqlparse-0.5.0-py3-none-any.whl.metadata (3.9 kB)
Collecting agate (from dbt-redshift==1.8.0)
  Using cached agate-1.11.0-py2.py3-none-any.whl.metadata (3.2 kB)
Collecting snowflake-connector-python~=3.0 (from snowflake-connector-python[secure-local-storage]~=3.0->dbt-snowflake==1.8.3)
  Using cached snowflake_connector_python-3.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (62 kB)
Collecting agate (from dbt-redshift==1.8.0)
  Using cached agate-1.9.1-py2.py3-none-any.whl.metadata (3.2 kB)
Collecting Jinja2<4,>=3.1.3 (from dbt-core)
  Using cached jinja2-3.1.4-py3-none-any.whl.metadata (2.6 kB)
Collecting mashumaro<4.0,>=3.9 (from mashumaro[msgpack]<4.0,>=3.9->dbt-core)
  Using cached mashumaro-3.13-py3-none-any.whl.metadata (114 kB)
Collecting logbook<1.6,>=1.5 (from dbt-core)
  Using cached Logbook-1.5.3.tar.gz (85 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Installing backend dependencies: started
  Installing backend dependencies: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting click<9.0,>=8.0.2 (from dbt-core)
  Using cached click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting networkx<4.0,>=2.3 (from dbt-core)
  Using cached networkx-3.3-py3-none-any.whl.metadata (5.1 kB)
Collecting protobuf<5,>=4.0.0 (from dbt-core)
  Using cached protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl.metadata (541 bytes)
Collecting requests<3.0.0 (from dbt-core)
  Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
Collecting pathspec<0.13,>=0.9 (from dbt-core)
  Using cached pathspec-0.12.1-py3-none-any.whl.metadata (21 kB)
Collecting dbt-extractor<=0.6,>=0.5.0 (from dbt-core)
  Using cached dbt_extractor-0.5.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.2 kB)
Collecting minimal-snowplow-tracker<0.1,>=0.0.2 (from dbt-core)
  Using cached minimal-snowplow-tracker-0.0.2.tar.gz (12 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Installing backend dependencies: started
  Installing backend dependencies: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting dbt-semantic-interfaces<0.6,>=0.5.1 (from dbt-core)
  Using cached dbt_semantic_interfaces-0.5.1-py3-none-any.whl.metadata (2.6 kB)
Collecting packaging>20.9 (from dbt-core)
  Using cached packaging-24.1-py3-none-any.whl.metadata (3.2 kB)
Collecting pytz>=2015.7 (from dbt-core)
  Using cached pytz-2024.1-py2.py3-none-any.whl.metadata (22 kB)
Collecting pyyaml>=6.0 (from dbt-core)
  Using cached PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)
Collecting daff>=1.3.46 (from dbt-core)
  Using cached daff-1.3.46.tar.gz (149 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Installing backend dependencies: started
  Installing backend dependencies: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting typing-extensions>=4.4 (from dbt-core)
  Using cached typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
Collecting Babel>=2.0 (from agate->dbt-redshift==1.8.0)
  Using cached Babel-2.15.0-py3-none-any.whl.metadata (1.5 kB)
Collecting isodate>=0.5.4 (from agate->dbt-redshift==1.8.0)
  Using cached isodate-0.6.1-py2.py3-none-any.whl.metadata (9.6 kB)
Collecting leather>=0.3.2 (from agate->dbt-redshift==1.8.0)
  Using cached leather-0.4.0-py2.py3-none-any.whl.metadata (2.8 kB)
Collecting parsedatetime!=2.5,>=2.1 (from agate->dbt-redshift==1.8.0)
  Using cached parsedatetime-2.6-py3-none-any.whl.metadata (4.7 kB)
Collecting python-slugify>=1.2.1 (from agate->dbt-redshift==1.8.0)
  Using cached python_slugify-8.0.4-py2.py3-none-any.whl.metadata (8.5 kB)
Collecting pytimeparse>=1.1.5 (from agate->dbt-redshift==1.8.0)
  Using cached pytimeparse-1.1.8-py2.py3-none-any.whl.metadata (3.4 kB)
Collecting colorama<0.5,>=0.3.9 (from dbt-common<2.0,>=1.0.4->dbt-bigquery==1.8.1)
  Using cached colorama-0.4.6-py2.py3-none-any.whl.metadata (17 kB)
Collecting jsonschema<5.0,>=4.0 (from dbt-common<2.0,>=1.0.4->dbt-bigquery==1.8.1)
  Using cached jsonschema-4.22.0-py3-none-any.whl.metadata (8.2 kB)
Collecting python-dateutil<3.0,>=2.0 (from dbt-common<2.0,>=1.0.4->dbt-bigquery==1.8.1)
  Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting psycopg2<3.0,>=2.9 (from dbt-postgres~=1.8.0->dbt-redshift==1.8.0)
  Using cached psycopg2-2.9.9.tar.gz (384 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'error'
  error: subprocess-exited-with-error
  
  � Getting requirements to build wheel did not run successfully.
  � exit code: 1
  ��> [21 lines of output]
      running egg_info
      writing psycopg2.egg-info/PKG-INFO
      writing dependency_links to psycopg2.egg-info/dependency_links.txt
      writing top-level names to psycopg2.egg-info/top_level.txt
      
      Error: pg_config executable not found.
      
      pg_config is required to build psycopg2 from source.  Please add the directory
      containing pg_config to the $PATH or specify the full executable path with the
      option:
      
          python setup.py build_ext --pg-config /path/to/pg_config build ...
      
      or with the pg_config option in 'setup.cfg'.
      
      If you prefer to avoid building psycopg2 from source, please install the PyPI
      'psycopg2-binary' package instead.
      
      For further information please check the 'doc/src/install.rst' file (also at
      <https://www.psycopg.org/docs/install.html>).
      
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

� Getting requirements to build wheel did not run successfully.
� exit code: 1
��> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.
dbt -v
./dbt-forklift.sh: line 61: dbt: command not found
./dbt-forklift.sh: line 62: dbt: command not found

@davidwitk
Copy link

@dbeatty10 Do you know if this only relevant for upgrading to 1.8? Or is this going to affect future versions, too? Context: I wonder if I should add the workaround as general recommendation for upgrading dbt

@ann8ty
Copy link

ann8ty commented Jul 3, 2024

I also have this issue on upgrade.

python --version
Python 3.11.9
I use venv with vs code

dbt --version
Traceback (most recent call last):
File "/Users/ann/code/data/data-workflows/.venv/bin/dbt", line 5, in
from dbt.cli.main import cli
File "/Users/ann/code/data/data-workflows/.venv/lib/python3.11/site-packages/dbt/cli/init.py", line 1, in
from .main import cli as dbt_cli # noqa
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ann/code/data/data-workflows/.venv/lib/python3.11/site-packages/dbt/cli/main.py", line 14, in
from dbt.cli import requires, params as p
File "/Users/ann/code/data/data-workflows/.venv/lib/python3.11/site-packages/dbt/cli/requires.py", line 10, in
from dbt.adapters.factory import adapter_management, register_adapter, get_adapter
ModuleNotFoundError: No module named 'dbt.adapters.factory'

pip freeze | grep 'dbt'
airflow-dbt-python==2.0.1
dbt-adapters==1.3.2
dbt-common==1.5.0
dbt-core==1.8.3
dbt-extractor==0.5.1
dbt-postgres==1.7.17
dbt-redshift==1.7.7
dbt-semantic-interfaces==0.5.1
dbt-tests-adapter==1.9.1

pip install --force-reinstall dbt-adapters

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
dbt-postgres 1.7.17 requires dbt-core==1.7.17, but you have dbt-core 1.8.3 which is incompatible.
dbt-redshift 1.7.7 requires dbt-core~=1.7.0, but you have dbt-core 1.8.3 which is incompatible.

my req file
airflow-dbt-python==2.0.1 # latest Jul 2024
dbt-core==1.7.17 # airflow-dbt-python 2.0.1 depends on dbt-core<1.8.0 and >=1.4.0; python_version >= "3.11"
dbt-redshift==1.7.7

my test req file
dbt-tests-adapter

but dbt works (But wrong version)

dbt --version
Core:

  • installed: 1.8.3
  • latest: 1.8.3 - Up to date!

Plugins:

was concerned that dbt had moved from 1.7.17 to 1.8.3 when it was pinned, changed my dbt tests file

dbt-tests-adapter==1.7.17

pip freeze | grep 'dbt'
airflow-dbt-python==2.0.1
dbt-adapters==1.3.2
dbt-common==1.5.0
dbt-core==1.7.17
dbt-extractor==0.5.1
dbt-postgres==1.7.17
dbt-redshift==1.7.7
dbt-semantic-interfaces==0.4.4
dbt-tests-adapter==1.7.17

dbt --version
Core:

  • installed: 1.7.17
  • latest: 1.8.3 - Update available!

Your version of dbt-core is out of date!
You can find instructions for upgrading here:
https://docs.getdbt.com/docs/installation

Plugins:

  • redshift: 1.7.7 - Update available!
  • postgres: 1.7.17 - Update available!

At least one plugin is out of date or incompatible with dbt-core.
You can find instructions for upgrading here:
https://docs.getdbt.com/docs/installation

@dbeatty10
Copy link
Contributor

@dbeatty10 Do you know if this only relevant for upgrading to 1.8? Or is this going to affect future versions, too? Context: I wonder if I should add the workaround as general recommendation for upgrading dbt

@davidwitk I'm assuming this will apply anytime upgrading dbt <1.8.0 to dbt >= 1.8.0.

@dbeatty10
Copy link
Contributor

@ann8ty I'd recommend trying the commands in #10135 (comment).

@brabster
Copy link

brabster commented Jul 3, 2024

Can you run 1.7.x adapter implementations with dbt 1.8.x core/adapters? If not then that might explain @ann8ty problem, looks like they have pinned exact 1.7.17 Pg/Redshift adapter versions.

More general question maybe aimed at @dbeatty10 - If you folks are decoupling versions of adapter implementations from core and adapters packages, how can a user tell whether different versions are compatible? Probably some docs somewhere I haven't found?

@smittal086
Copy link

pip install --upgrade dbt-adapters

run this command, hopefully it will solve the issue

@jessanmen1
Copy link

pip install -r requirements.txt --no-cache-dir --ignore-installed worked for me on Python 3.10.

@mroy-seedbox
Copy link

Simply upgrading dbt-adapters solved the issue! 👌

@paulav6
Copy link

paulav6 commented Aug 2, 2024

Re-installing dbt-adapters did not work for me. However cleaning up virtual environment rm -rf .ve and reinstalling pip install --upgrade -r requirements.txt that had the dbt versions worked.

@nguyentoanit
Copy link

After trying all above solutions, Only upgrading python to v3.12 worked for me. 🤷

- OS: Linux
- Python: 3.12.4
- dbt: 1.8.4

@ozkary
Copy link

ozkary commented Aug 6, 2024

After upgrading to dbt 1.8.4, I also got the error:

File ".local/lib/python3.8/site-packages/dbt/cli/requires.py", line 10, in <module>
    from dbt.adapters.factory import adapter_management, register_adapter, get_adapter
ModuleNotFoundError: No module named 'dbt.adapters.factory'

I was able to correct this by removing the current adapters and installing it again:

pip uninstall -y dbt-adapters

pip install --upgrade dbt-adapters

All looks fine now. I am using python 3.8.10

Core:
  - installed: 1.8.4
  - latest:    1.8.4 - Up to date!

Plugins:
  - bigquery: 1.8.2 - Up to date!

Thanks for helping us resolve this.

@moltar
Copy link

moltar commented Aug 7, 2024

I have some observations to throw in.

It appears that the problem is intermittent. I've had the same CI run fail, and then after retrying it had passed.

I used a pip freeze solution with no force upgrades.

On the same GitHub Actions run, I had three workflows that used dbt install identical steps. One out of three runs had failed with the No module named 'dbt.adapters.factory' error.

Then, I clicked "Re-run failed," and it passed.

$> grep dbt "$DBT_PROJECT_DIR/requirements.txt"

dbt-adapters==1.4.0
dbt-common==1.7.0
dbt-core==1.8.4
dbt-extractor==0.5.1
dbt-postgres==1.8.2
dbt-semantic-interfaces==0.5.1
sqlfluff-templater-dbt==3.1.0

@brabster
Copy link

brabster commented Aug 7, 2024

@moltar are you caching the dependencies in the GH Action? I would suspect that for causing intermittent problems as the state of what's ending up on in the filesystem (and then being cached) may be quite unpredictable. I've seen no issues in my GH actions, but I don't cache. If you are caching, maybe try disabling that to get a clean install from scratch?

@moltar
Copy link

moltar commented Aug 7, 2024

@brabster Yup:

      - name: Install Python
        uses: actions/setup-python@v4
        with:
          cache: pip
          python-version: '3.12'

@moltar
Copy link

moltar commented Aug 8, 2024

@brabster Removed caching, but still get random failures.

@brabster
Copy link

brabster commented Aug 9, 2024

@moltar strange - if the root cause I identified earlier is true, clean install should not have a problem (unless something else is going on as well to confound the problem). Curious, so happy to take a look if you can share the details of the workflow between the setup python task the step that fails like what's the specific install command, and any logs you can share about the install/update process?

@alxsbn
Copy link

alxsbn commented Sep 3, 2024

Same issue after upgrading dbt within our Airflow stack. We have Python 3.8.18. We try to solve this by using pip install --upgrade dbt-adapters without success as-well-as doing a --force-recreate of our stack (so it's not a cache issue)

airflow-dbt==0.4.0
dbt-adapters==1.4.1
dbt-common==1.7.0
dbt-core==1.8.6
dbt-databricks==1.8.5
dbt-extractor==0.5.1
dbt-semantic-interfaces==0.5.1
dbt-spark==1.8.0

@saeedkhattak
Copy link

saeedkhattak commented Sep 10, 2024

Had this issue with my dbt with oracle adapter. The following code fixed it:
pip install --upgrade dbt-core dbt-oracle
Make sure you upgrade both your dbt core as well as your adapter

diegoquintanav added a commit to Som-Energia/somenergia-jardiner that referenced this issue Sep 10, 2024
* fix: add dbt-postgres explictly to dbt-deps group

* ci: ignore build cache during pre-releases

* fix: temporary disable test to allow merging

* ci: update paths in dbt release task

* chore: remove dbt-core and dbt-adapters and let dbt-postgres handle dependencies

* chore: add dbt-adapters to deps explicitly

* chore: update dbt-core manually required by dbt 1.8

see dbt-labs/dbt-core#10135

* ref: add some extra commands to makefile

* chore: update dbt deps

* chore: remove dbt-osmosis, upgrade deps once more

* ref: set elementary tests as warnings

* chore: run pre-commit on failing task

* chore: remove references to non-existing dirs in dbt_project.yml

they were polluting the logs with warning

* chore: move existing tests to data_tests directory

* chore: update python and pre-commit dependencies

* chore: rename tests to data_tests in dbt 1.8

The `tests` config has been renamed to `data_tests`. Please see
https://docs.getdbt.com/docs/build/data-tests#new-data_tests-syntax for more

* ref: move dbt settings from profiles to dbt_project

as per warnings in versions 1.8.1
@hanslemm
Copy link

In my case, after many trials and errors, I discovered that if you reinstall dbt-core after dbt-adapters is already installed, this error arises. So you actually need to reinstall both with --force-install.

tatiana pushed a commit to astronomer/astronomer-cosmos that referenced this issue Dec 6, 2024
closes: #1344

This PR is doing below modification

- Upgrade Python version to Python3.12
- Add `--force-reinstall` flag in pip install command 
- Install dbt-command separately based on suggestion:
dbt-labs/dbt-core#10135 (comment)

Success CI job:
https://github.com/astronomer/astronomer-cosmos/actions/runs/12165978965/job/33931200107?pr=1364
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests