相关疑难解决方法(0)

如何在没有模块名称的情况下记录类?

我正在尝试使用sphinx并成功生成html文件来记录python包.我正在记录的包由一组文件组成*.py,大多数包含一个类,其中几个文件是定义了函数的真正模块.我不需要暴露每个类都在一个模块中的事实,所以我from__init__.py文件中添加了合适的语句,例如

from base import Base
Run Code Online (Sandbox Code Playgroud)

这样用户就可以使用该import pkg命令,然后不必指定包含该类的模块:

import pkg
class MyBase(pkg.Base):  # instead of pkg.base.Base ...
...
Run Code Online (Sandbox Code Playgroud)

问题在于,斯芬克斯坚持将课程记录为pkg.base.Base.我试图设置add_module_names = Falseconf.py.然而,这导致狮身人面像显示出简单的类Base而不是pkg.Base.此外,这也破坏了作为模块的几个*.py文件的文档.

我如何sphinx将课程作为一个班级pkg.Base?如何add_module_names为每个*.py文件选择性地设置指令?

python python-sphinx

15
推荐指数
2
解决办法
1362
查看次数

Sphinx交叉引用中断在父模块中导入和记录的继承对象

我正在尝试正确构建我的Sphinx文档并且交叉引用(包括来自继承关系的那些)正常工作.

在我的项目中,我有一个情况,在下面的例子中描述,为了方便起见,我在这个github repo上进行了复制:

$ tree .
.
??? a
?   ??? b
?   ?   ??? __init__.py
?   ??? __init__.py
??? conf.py
??? index.rst
??? README.md
Run Code Online (Sandbox Code Playgroud)

a.b.__init__,我宣布课AB.B继承自A.在a.__init__,我导入AB喜欢:from .b import A, B.我在实际项目中执行此操作的原因是减少模块上的导入路径,同时将特定类的实现保存在单独的文件中.

然后,在我的第一个文件,我车博士模块a.. automodule:: a.因为a.b它只是一个辅助模块,所以我不自动调整它,因为我不想重复引用相同的类,也不要让用户混淆他们应该做的事情.我也设定show-inheritance期待a.B将有一个反向链接a.A.

如果我试图以非常挑剔的方式构建sphinx,我将收到以下警告:

WARNING: py:class reference target not found: a.b.A
Run Code Online (Sandbox Code Playgroud)

如果我查看生成的类文档B,那么我验证它没有与类正确链接 …

python python-sphinx

5
推荐指数
1
解决办法
396
查看次数

标签 统计

python ×2

python-sphinx ×2