AttributeError: module 'dataclasses' has no attribute 'is_dataclass'

AttributeError: module 'dataclasses' has no attribute 'is_dataclass'

我正在尝试使用 pydantic 创建一个动态模型,但它似乎连基本示例都无法获得:

from pydantic import BaseModel, create_model
MyModel = create_model('MyModel', foo="foo")

错误是:

MyModel = create_model('MyModel', foo="foo")
  File "pydantic/main.py", line 972, in pydantic.main.create_model
  File "pydantic/main.py", line 228, in pydantic.main.ModelMetaclass.__new__
  File "pydantic/fields.py", line 488, in pydantic.fields.ModelField.infer
  File "pydantic/fields.py", line 419, in pydantic.fields.ModelField.__init__
  File "pydantic/fields.py", line 539, in pydantic.fields.ModelField.prepare
  File "pydantic/fields.py", line 801, in pydantic.fields.ModelField.populate_validators
  File "pydantic/validators.py", line 682, in find_validators
  File "pydantic/dataclasses.py", line 82, in pydantic.dataclasses.is_builtin_dataclass
AttributeError: module 'dataclasses' has no attribute 'is_dataclass'

由于我使用的是poetry,所以我使用的命令是:

poetry run python main.py

有人知道为什么会出现这样的错误吗?

原因是因为我在与 main.py 相同的文件夹中有另一个文件 dataclasses.py 并且 poetry run python main.py 自动使用了我的本地 datacalsses.py 并因此覆盖了系统 dataclasses不知何故。这里的一个很好的教训是不要使用 class 名称作为本地模块名称。