我正在尝试正确构建我的Sphinx文档并正确使用交叉引用(包括那些来自继承关系的引用)。
在我的项目中,我遇到了以下示例中描述的情况,为了方便起见,在此github存储库中将其复制:
$ tree .
.
├── a
│ ├── b
│ │ └── __init__.py
│ └── __init__.py
├── conf.py
├── index.rst
└── README.md
在中a.b.__init__
,我声明了类A
和B
。B
继承自A
。在中a.__init__
,我导入A
并B
喜欢:from .b import A, B
。我在实际项目中执行此操作的原因是减少模块上的导入路径,同时在单独的文件中保留特定类的实现。
然后,在我的第一个文件,我车博士模块a
用.. automodule:: a
。因为a.b
它只是一个辅助模块,所以我不会自动为其添加文档,因为我不想重复引用相同的类,也不希望使用户混淆他们应该做什么。我还设置了show-inheritance
预期a.B
的反向链接a.A
。
如果尝试以nit-picky模式进行狮身人面像构建,则会收到以下警告:
WARNING: py:class reference target not found: a.b.A
如果查看class的生成文档B
,那么我确认它与class没有正确链接A
,这只是确认了以上警告。
问题:我该如何解决?
Sphinx使用__module__
属性的值来找出定义了类/函数/方法的模块的名称(请参阅https://docs.python.org/2/reference/datamodel.html#the-standard-type -层级)。有时,这不是您在文档中想要的。
该属性是可写的。您可以通过在/__init__.py中添加以下行来解决您的问题:
A.__module__ = "a"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句