我正在尝试记录主要是 C 扩展模块的 pycurl。
在这个扩展模块中有一些类,用 C 语言编写。它们有方法。这些方法上定义了文档字符串:
>>> 帮助(pycurl.Curl().close) 关于内置函数关闭的帮助: 关(...) 关闭()-> 无。关闭句柄并结束 curl 会话。
但是,这些方法并没有在类本身上定义:
>>> 目录(pycurl.Curl) ['__call__','__class__','__cmp__','__delattr__','__doc__','__eq__','__format__','__ge__','__getattribute__','__gt__','__hash__','__init__',' __le__','__lt__','__module__','__name__','__ne__','__new__','__reduce__','__reduce_ex__','__repr__','__self__','__setattr__','__sizeof__','__str__' , '__subclasshook__'] >>> pycurl.Curl.close 回溯(最近一次通话最后): 文件“”,第 1 行,在 AttributeError: 'builtin_function_or_method' 对象没有属性 'close'
结果,当我尝试使用 automethod 记录它们时,sphinx 说这些方法不存在:
.. 自动方法:: pycurl.Curl.close curlobject.rst:13:警告:autodoc:无法从模块 u'pycurl' 导入方法 u'Curl.close';引发了以下异常: 回溯(最近一次通话最后): 文件“/usr/local/lib/python2.7/site-packages/Sphinx-1.2-py2.7.egg/sphinx/ext/autodoc.py”,第 342 行,在 import_object obj = self.get_attr(obj, part) 文件“/usr/local/lib/python2.7/site-packages/Sphinx-1.2-py2.7.egg/sphinx/ext/autodoc.py”,第 241 行,在 get_attr return safe_getattr(obj, name, *defargs) 文件“/usr/local/lib/python2.7/site-packages/Sphinx-1.2-py2.7.egg/sphinx/util/inspect.py”,第 114 行,在 safe_getattr 引发 AttributeError(name) 属性错误:关闭
如何让 sphinx 从 C 扩展模块中定义的方法中获取文档字符串?