2017-06-01 26 views
0

我目前有一个用例,我使用下面的代码在模块中创建Python类。如何在使用动态类和动态模块时自动生成使用Sphinx的Python文档

... 
module = type.ModuleType(module_name) 
... 
klass = type(name, (object,), dict(__doc__='docstring')) 
... 
setattr(module, name, klass) 
... 

但是Sphinx无法为这些类生成文档。它甚至无法找到类。有没有办法给Sphinx添加一个扩展来处理这个用例呢?思考?

此完整的最低工作示例位于here

+0

当模块导入它们是否产生? – jonrsharpe

+0

是的,他们是。子模块在['__init __。py'](https://github.com/kdheepak/dynamic-classes/blob/master/modules/__init__.py)文件中创建。 – kdheepak

回答

1

你有modules.rst以下automodule指令:

.. automodule:: modules 
    :members: 
    :undoc-members: 
    :show-inheritance: 

但动态模块的合格的名称是modules.Module1modules.Module2(这些名称添加到sys.modules在_factory.py)。

对我来说,以下工作:

.. automodule:: modules.Module1 
    :members: 
    :undoc-members: 
    :show-inheritance: 

.. automodule:: modules.Module2 
    :members: 
    :undoc-members: 
    :show-inheritance: 
+0

感谢您的回答!这解决了它!那么问题出现在'sphinx-apidoc'中了吗?因为我用它来生成'modules.rst'文件。 – kdheepak

+0

是的,我认为是。 sphinx-apidoc寻找“正常”模块,并且不够聪明,推断出有动态创建的模块。 – mzjn

相关问题