Python 如何使用Sphinx autodoc记录我的主要功能?
我在使用Sphinx autodoc构建文档时遇到问题。我的项目由包含类的不同模块组成。正确生成这些模块的文档 但是有一个模块(在我的例子中称为controller.py)包含 用于初始化来自其他模块的对象和启动线程等的代码 由于模块代码在构建文档时由Sphinx执行,因此我在controller.py中添加了以下内容以防止代码运行:Python 如何使用Sphinx autodoc记录我的主要功能?,python,main,python-sphinx,read-the-docs,autodoc,Python,Main,Python Sphinx,Read The Docs,Autodoc,我在使用Sphinx autodoc构建文档时遇到问题。我的项目由包含类的不同模块组成。正确生成这些模块的文档 但是有一个模块(在我的例子中称为controller.py)包含 用于初始化来自其他模块的对象和启动线程等的代码 由于模块代码在构建文档时由Sphinx执行,因此我在controller.py中添加了以下内容以防止代码运行: if __name__ == '__main__': main() 此外,所有执行的代码都包含在主函数中,如下所示: ''' A. general de
if __name__ == '__main__':
main()
此外,所有执行的代码都包含在主函数中,如下所示:
''' A. general description of controller.py module '''
import mymod1, mymod2, mymod3
def main():
''' B. initializing obj1 '''
obj1 = mymod1.class1()
obj2 = mymod2.class2()
''' C. doing something '''
obj2.run()
if __name__ == '__main__':
main()
问题是controller.py的Sphinx的输出,仅包含外部主功能:
A. general description of controller.py module
controller.main()
我想看到的是注释B和C,这在其他模块中没有问题,因为内部代码包含在一个类中。但在这里,函数中包含的代码被忽略
有没有一种方法可以在不太修改Python代码的情况下获得结果?我希望保持代码和文档之间的依赖关系较低
任何暗示都将不胜感激。谢谢
编辑:
我切换到apidoc,但问题与此类似。我可以在main()中看到我的注释,但在main中没有函数定义的注释。例如:
此外,如果有可能包含源代码而不仅仅是API,那就太好了。看起来您的
main
函数有两个docstring(注意:不是注释)。这是行不通的。只有第一个被认可。每个模块、类或函数只能有一个docstring。函数代码的缩进看起来也很奇怪。函数中定义的函数不是公共API的一部分。代码的用户不能直接调用它。为什么你需要用斯芬克斯来记录它?相关:,关于在文档中包含源代码:查看@mzjn谢谢您的回复。文档的目的是使实现细节可以从几个使用API(GUI框架)的项目中获取。决定GUI行为的主函数在每个项目中都不同,回调函数嵌套在主函数中定义。就像在doxygen中一样,切换到实现将非常好。因此,将有一种方便的方式在更多的开发人员之间共享信息,项目是如何实现的,想法是什么。但也许我必须把信息移到thr.rst文件中
def main():
''' This comment is visible '''
def smallfunction():
''' This comment is NOT visible '''