已安装dbt-core,但执行dbt --version时出现错误信息

人工智能 2026-07-08

Context

我已经通过 uv 安装了dbt-core v1.11,但现在遇到了一个问题。

当我运行 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

我正在使用Python 3.14。

Things I've Tried

我尝试安装多个版本(每次都卸载之前安装的版本)来让dbt-core能正常工作,例如:

1.11.11
1.5.4
0.20.2
0.21.1

Expected Result

我本来希望看到我正在运行的dbt版本。

Actual Result

我得到了那个错误。

Conclusion

这究竟是什么原因,如何在本地机器上让dbt-core正常工作?

解决方案

我问了AI,得到一个有用的结果!

原来,我对Python 3.14的依赖在推动这个问题。显然,mashumaro依赖与Python 3.14不兼容。

我把Python版本固定在3.13,并重新安装了dbt-core。具体使用的命令是:

uv python pin 3.13
uv add dbt-duckdb

备选方案

dbt-Core v1.11及以下版本与Python 3.14不兼容。这一点在本地安装文档中有所提及,见 [本地安装] 和 [我可以使用的Python版本是什么?]。

首个支持Python 3.14的版本将是dbt-core 1.12,目前处于测试阶段。 指南 [升级到v1.12] 显示了差异。

如果你在尝试,可以通过指定版本安装1.12测试版,例如:

uv add "dbt-core>=1.12.0b1,<1.13"

或者在你的pyproject.toml中添加依赖

[project]
name = "dbt112"
version = "0.1.0"
requires-python = ">=3.14"
dependencies = [
    "dbt-core>=1.12.0b3,<1.13",
]

否则在1.12发布之前,你至少需要将Python定位在3.13

[project]
name = "dbt112"
version = "0.1.0"
requires-python = "==3.13"
dependencies = [
    "dbt-core>=1.11",
]
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章