当我运行sphinx-apidoc然后make html它产生doc页面时,在目录(TOC)中的每个模块/包名称的末尾都有"Subpackages"和"Submodules"部分以及"module"和"package".如何在不编辑Sphinx源代码的情况下阻止编写这些额外的标题?
这是我想要制作的示例文档页面(注意TOC):
http://selenium.googlecode.com/svn/trunk/docs/api/py/index.html#documentation
据我所知,这是由于sphinx源代码中的apidoc.py文件(第88行):
我可以手动编辑每个单独的.rst文件来删除这些标题,或者只是从脚本中删除那些代码行,但是我必须编译Sphinx源代码.有没有手动编辑Sphinx源的自动方式?
我有一个这样的项目结构:
package/
__init__.py
module.py
Run Code Online (Sandbox Code Playgroud)
__init__.py 包含:
from .module import Class
Run Code Online (Sandbox Code Playgroud)
module.py 包含:
class Class:
pass
Run Code Online (Sandbox Code Playgroud)
使用sphinx-apidoc -o package/docs/ package/和sphinx-build package/docs/ package/docs/_build的文档Class如下所示:
类 package.module。类
基础:对象
我想改成以下输出:
类包。类
基础:对象
或者,甚至更好,没有包名称:
类 级
基础:对象
用户不必知道在哪个文件中定义了类。如果不混淆,这些信息是完全不相关的。由于__init__.py是Class直接导入到包的名称空间中,因此用户会将此类导入为from package import Class,而不是from package.module import Class,我希望文档能够反映出来。
有没有一种方法可以让狮身人面像输出相对于包名称空间的路径?
我试图生成使用狮身人面像1.4和我的蟒蛇类的文档sphinx-apidoc和sphinx.ext.autodoc扩展.
我有很多模块,我希望每个模块只显示类名,但不是类中的完整方法列表(在我的代码中都有文档字符串).
这是我的conf.py文件的片段:
sys.path.insert(0, '/blah/sphinx/src')
extensions = ['sphinx.ext.autodoc']
autodoc_member_order = 'bysource'
autodoc_default_flags = ['no-members']
Run Code Online (Sandbox Code Playgroud)
这是一个玩具模块(my_module.py),我用它来弄清楚Sphinx是如何工作的:
"""
==============
Test my module
==============
"""
def module_function():
"""Here is a module function, let's see if it's in"""
print 'module level'
class TestClass:
"""
Test this class
Here is some more class documentation.
"""
def __init__(self):
"""Here is init"""
self.test = True
def getName(self, inputName):
"""Summary for getName
more documentation for getName
"""
print "hello"
return …Run Code Online (Sandbox Code Playgroud) 使用Sphinx记录我的 Python 项目。我想删除每个 python 文件名称后面的“模块”一词(在导航栏、目录、页面标题等中)。
例如详细信息:
该项目由 2 个文件utils.py和main.py.
在我的index.rst文件中,我使用:
.. toctree::
:maxdepth: 2
utils
main
Run Code Online (Sandbox Code Playgroud)
将两个文件作为“模块”导入。docs/然后从文件夹中调用:
sphinx-apidoc -f -o ./source/ ..
make html
Run Code Online (Sandbox Code Playgroud)
生成静态站点。在该站点中,每个文件名后面都带有“模块”一词,我想将其删除。
假设我有以下结构
mypackage
__init__.py
core.py
Run Code Online (Sandbox Code Playgroud)
与__init__.py:
from .core import my_function
__all__ = ['my_function']
Run Code Online (Sandbox Code Playgroud)
和 core.py
def myfunction():
''' really cool function '''
pass
Run Code Online (Sandbox Code Playgroud)
运行sphinx-apidoc --full -o docs,python setup.py build_sphinx
我得到myfunction两次的文档。
如何避免这种重复,最好仅在顶层使用文档(因为这是针对用户的API)。
方案如下。有一个名为foo(正在大力开发的 API,处于第一个 alpha 阶段)的包,其rst文件是使用sphinx-apidoc.
为了在foo生成这些文件后有更好的文档,需要进行一些编辑。比如说,foo.bar.rst在生成的内容中添加了一些段落sphinx-apidoc
sphinx-apidoc当进行新的呼叫时,如何才能不丢失所有这些信息?当然,我希望反映 API 中的潜在更改,并保留添加的手动信息。