已安装dbt-core,但执行dbt --version时出现错误信息
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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。