Autodoc是Sphinx文档生成器的一部分,它可以自动文档化Python模块的源代码。但是,当包含有嵌套的pydantic模型的类时,Autodoc会失败并给出错误信息。例如,在下面的示例代码中:
from pydantic import BaseModel
class NestedModel(BaseModel):
x: int
y: int
class MainModel(BaseModel):
nested: NestedModel
在文档生成中使用Autodoc时,会出现下面的错误信息:
Failed to import module 'example_module' from '/path/to/example_module.py'
...
sphinx.ext.autodoc.importer.ImportError: No module named 'pydantic.fields'
这是因为pydantic中的fields模块在运行时被动态地创建,而Autodoc需要在导入时访问它。要解决该问题,可以在Sphinx的配置文件中添加以下代码:
autodoc_mock_imports = ['pydantic']
这将告诉Autodoc在导入时使用模拟的pydantic模块,从而绕过导入时的动态创建过程。完整的配置文件示例如下:
# conf.py
...
autodoc_mock_imports = ['pydantic']
重新运行文档生成器,将不会出现Autodoc失败的问题。