autodoc:基类以全名显示,而不是尊重导入

Ban*_*ank 7 python python-sphinx

我希望我能在这里找到解决这个相当复杂的问题的方法。

我使用 sphinx 和 intersphinx 来记录我的项目。

我有一个继承自 mongoengine.Document 的类。

当我使用 sphinx-apidoc 和 sphinx-build (通过 sphinx-quickstart 自动生成的 Makefile)构建 sphinx 文档时,对 mongoengine.Document 类的引用显示为 mongoengine.document.Document,这实际上是正确的完全限定名称,但这是一个问题,因为在 mongoengine 项目上该类被标记为 mongoengine.Document 所以 intersphinx 根本不链接。

有没有办法告诉 sphinx 在导入基类时生成有关基类的信息(在我的代码中,我有 from mongoengine import Document)而不是其完整模块路径?

下面的代码:

from mongoengine import Document, EmbeddedDocumentListField

class MyDocument(Document):
""" my docstring """
Run Code Online (Sandbox Code Playgroud)

它会生成一些 html,例如:

class myproj.models.MyDocument(*args, **values) Bases:
mongoengine.document.Document  <-- intersphinx does not find the link to external doc!
Run Code Online (Sandbox Code Playgroud)

代替

class myproj.models.MyDocument(*args, **values)
Bases: mongoengine.Document <-- here intersphinx will properly link
Run Code Online (Sandbox Code Playgroud)

mzj*_*zjn 1

__module__属性保存定义该类的模块的名称。的值为Document.__module__“mongoengine.document”。

该属性是可写的,因此解决方法是将以下行添加到代码中:

Document.__module__ = "mongoengine"
Run Code Online (Sandbox Code Playgroud)