You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装dbt-core后执行dbt --version报错的问题求助

问题背景

我使用uv工具安装了v1.11版本的dbt-core,当前运行环境为Python 3.14,安装完成后遇到运行异常。
当执行uv run dbt --version命令时,返回如下错误信息:

user@host proj_dir % uv run dbt --version
Traceback (most recent call last):
  File "<project_root>.venv/bin/dbt", line 4, in <module>
    from dbt.cli.main import cli
  File "<project_root>.venv/lib/python3.14/site-packages/dbt/cli/__init__.py", line 1, in <module>
    from .main import cli as dbt_cli  # noqa
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<project_root>.venv/lib/python3.14/site-packages/dbt/cli/main.py", line 11, in <module>
    from dbt.adapters.factory import register_adapter
  File "<project_root>.venv/lib/python3.14/site-packages/dbt/adapters/factory.py", line 9, in <module>
    from dbt_common.events.functions import fire_event
  File "<project_root>.venv/lib/python3.14/site-packages/dbt_common/events/__init__.py", line 2, in <module>
    from dbt_common.events.event_manager_client import get_event_manager
  File "<project_root>.venv/lib/python3.14/site-packages/dbt_common/events/event_manager_client.py", line 5, in <module>
    from dbt_common.events.event_manager import IEventManager, EventManager
  File "<project_root>.venv/lib/python3.14/site-packages/dbt_common/events/event_manager.py", line 13, in <module>
    from dbt_common.events.logger import LoggerConfig, _Logger, _TextLogger, _JsonLogger, LineFormat
  File "<project_root>.venv/lib/python3.14/site-packages/dbt_common/events/logger.py", line 14, in <module>
    from dbt_common.utils.encoding import ForgivingJSONEncoder
  File "<project_root>.venv/lib/python3.14/site-packages/dbt_common/utils/__init__.py", line 9, in <module>
    from dbt_common.utils.dict import (
    ...<6 lines>...
    )
  File "<project_root>.venv/lib/python3.14/site-packages/dbt_common/utils/dict.py", line 5, in <module>
    from dbt_common.exceptions import DbtConfigError, RecursionError
  File "<project_root>.venv/lib/python3.14/site-packages/dbt_common/exceptions/__init__.py", line 1, in <module>
    from dbt_common.exceptions.base import *  # noqa
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<project_root>.venv/lib/python3.14/site-packages/dbt_common/exceptions/base.py", line 6, in <module>
    from dbt_common.dataclass_schema import ValidationError
  File "<project_root>.venv/lib/python3.14/site-packages/dbt_common/dataclass_schema.py", line 15, in <module>
    from mashumaro.jsonschema import build_json_schema
  File "<project_root>.venv/lib/python3.14/site-packages/mashumaro/jsonschema/__init__.py", line 1, in <module>
    from .builder import JSONSchemaBuilder, build_json_schema
  File "<project_root>.venv/lib/python3.14/site-packages/mashumaro/jsonschema/builder.py", line 5, in <module>
    from mashumaro.jsonschema.models import Context, JSONSchema
  File "<project_root>.venv/lib/python3.14/site-packages/mashumaro/jsonschema/models.py", line 178, in <module>
    class JSONObjectSchema(JSONSchema):
        type: Optional[JSONSchemaInstanceType] = JSONSchemaInstanceType.OBJECT
  File "<project_root>.venv/lib/python3.14/site-packages/mashumaro/mixins/dict.py", line 25, in __init_subclass__
    compile_mixin_unpacker(cls, **builder_params["unpacker"])
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<project_root>.venv/lib/python3.14/site-packages/mashumaro/core/meta/mixin.py", line 49, in compile_mixin_unpacker
    builder.add_unpack_method()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "<project_root>.venv/lib/python3.14/site-packages/mashumaro/core/meta/code/builder.py", line 586, in add_unpack_method
    self._add_unpack_method_lines(method_name)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "<project_root>.venv/lib/python3.14/site-packages/mashumaro/core/meta/code/builder.py", line 491, in _add_unpack_method_lines
    ).build(
      ~~~~~^
        fname=fname,
        ^^^^^^^^^^^^
    ...<2 lines>...
        alias=alias,
        ^^^^^^^^^^^^
    )
    ^
  File "<project_root>.venv/lib/python3.14/site-packages/mashumaro/core/meta/code/builder.py", line 1332, in build
    unpacked_value = UnpackerRegistry.get(
        ValueSpec(
    ...<8 lines>...
        )
    )
  File "<project_root>.venv/lib/python3.14/site-packages/mashumaro/core/meta/types/common.py", line 241, in get
    raise UnserializableField(
        spec.field_ctx.name, spec.type, spec.builder.cls
    )
mashumaro.exceptions.UnserializableField: Field "schema" of type Optional[str] in JSONObjectSchema is not serializable
已尝试方案

我已尝试安装多个版本的dbt-core(每次安装前均完全卸载此前安装的版本),尝试过的版本包括:

1.11.11
1.5.4
0.20.2
0.21.1

上述版本安装后均出现相同报错,问题未解决。

预期结果

执行版本查询命令后,可正常返回当前环境安装的dbt版本信息。

实际结果

执行命令后直接抛出上述错误栈,dbt无法正常启动运行。

求助诉求

请问该错误的触发原因是什么?如何操作才能在本地机器上正常部署运行dbt-core?


问题原因

核心触发原因是Python 3.14版本过新,dbt-core全版本及其依赖链尚未完成适配。
报错栈里提到的mashumaro是dbt依赖的序列化库,Python 3.14调整了dataclass类初始化阶段的属性解析顺序,而你测试的所有dbt-core版本发布时间都早于Python 3.14正式发布时间,其依赖规则锁定的mashumaro版本范围没有包含适配Python 3.14的修复版本,uv安装时自动拉取的依赖组合在Python 3.14下运行时,无法正确识别数据类字段,直接抛出字段不可序列化的错误。这也是你更换多个历史版本dbt-core依然报相同错误的根本原因。

解决步骤

注意:不要尝试单独升级/降级mashumaro版本绕过报错,dbt对序列化库的版本绑定逻辑非常严格,强行修改单依赖版本会触发更多后续运行时的隐式兼容问题。

最稳妥的方案是将虚拟环境的Python版本切换到dbt官方支持的范围(目前所有稳定版dbt-core支持Python 3.8 ~ 3.12,优先选3.11或3.12兼容性最佳),用uv操作流程如下:

  1. 安装兼容版本的Python:
    uv python install 3.12
  2. 在项目目录下基于Python 3.12重建虚拟环境:
    uv venv --python 3.12
  3. 重新安装需要的dbt-core版本,比如最新稳定版:
    uv add dbt-core==1.11.11
  4. 执行版本校验命令即可正常输出结果:
    uv run dbt --version

内容的提问来源于stack exchange,提问作者Hebron Watson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:27:51