我正在尝试记录主要是C扩展模块的pycurl。
在这个扩展模块中有一些用C语言编写的类。它们有方法。这些方法有定义的文档字符串:
>>> help(pycurl.Curl().close) Help on built-in function close: close(...) close() -> None. Close handle and end curl session.
但是,这些方法本身并没有定义:
>>> dir(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 Traceback (most recent call last): File "", line 1, in AttributeError: 'builtin_function_or_method' object has no attribute 'close'
因此,当我尝试使用automethod来记录它们时,sphinx说这些方法不存在:
.. automethod:: pycurl.Curl.close curlobject.rst:13: WARNING: autodoc: failed to import method u'Curl.close' from module u'pycurl'; the following exception was raised: Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/Sphinx-1.2-py2.7.egg/sphinx/ext/autodoc.py", line 342, in import_object obj = self.get_attr(obj, part) File "/usr/local/lib/python2.7/site-packages/Sphinx-1.2-py2.7.egg/sphinx/ext/autodoc.py", line 241, in get_attr return safe_getattr(obj, name, *defargs) File "/usr/local/lib/python2.7/site-packages/Sphinx-1.2-py2.7.egg/sphinx/util/inspect.py", line 114, in safe_getattr raise AttributeError(name) AttributeError: close
如何让sphinx从C扩展模块中定义的方法中获取文档字符串?