安装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操作流程如下:
- 安装兼容版本的Python:
uv python install 3.12 - 在项目目录下基于Python 3.12重建虚拟环境:
uv venv --python 3.12 - 重新安装需要的dbt-core版本,比如最新稳定版:
uv add dbt-core==1.11.11 - 执行版本校验命令即可正常输出结果:
uv run dbt --version
内容的提问来源于stack exchange,提问作者Hebron Watson

