我正在尝试使用sphinx并成功生成html文件来记录python包.我正在记录的包由一组文件组成*.py,大多数包含一个类,其中几个文件是定义了函数的真正模块.我不需要暴露每个类都在一个模块中的事实,所以我from在__init__.py文件中添加了合适的语句,例如
from base import Base
Run Code Online (Sandbox Code Playgroud)
这样用户就可以使用该import pkg命令,然后不必指定包含该类的模块:
import pkg
class MyBase(pkg.Base): # instead of pkg.base.Base ...
...
Run Code Online (Sandbox Code Playgroud)
问题在于,斯芬克斯坚持将课程记录为pkg.base.Base.我试图设置add_module_names = False在conf.py.然而,这导致狮身人面像显示出简单的类Base而不是pkg.Base.此外,这也破坏了作为模块的几个*.py文件的文档.
我如何sphinx将课程作为一个班级pkg.Base?如何add_module_names为每个*.py文件选择性地设置指令?
我是sphinx的新手,我正在尝试将它作为我的项目的API参考.也许在那之后作为项目文档.
我使用这两个命令生成它
sphinx-apidoc -e -o doc/api tracer
sphinx-build -b dirhtml doc/ build/doc/dirhtml
Run Code Online (Sandbox Code Playgroud)
它存在生成此目录的问题
- tracer package
- tracer.lang package
- tracer.lang.en module
- tracer.packageManagers package
- tracer.packageManagers.dnf module
- tracer.packageManagers.dpkg module
- tracer.packageManagers.portage module
- ...
- tracer.resources package
- tracer.resources.ProcessesList module
- tracer.resources.applications module
- tracer.resources.args_parser module
- ...
Run Code Online (Sandbox Code Playgroud)
很不清楚列出不必要的冗余信息的原因.这样会好得多:
- tracer package
- lang package
- en module
- packageManagers package
- dnf module
- dpkg module
- portage module
- ...
- resources package
- ProcessesList module …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像的文件夹结构:
project/
mymodule/
__init__.py
m1.py
m2.py
sub1/
__init__.py
s1.py
s2.py
Run Code Online (Sandbox Code Playgroud)
mymod/__init__.py:
"""The __init__ docstr"""
from m1 import *
from m2 import *
Run Code Online (Sandbox Code Playgroud)
mymod/m1.py:
"""m1 doc str"""
def func1():
"""func1 docstr"""
return 1
Run Code Online (Sandbox Code Playgroud)
mymod/m2.py:
"""m2 doc str"""
def func2():
"""func2 docstr"""
return 2
Run Code Online (Sandbox Code Playgroud)
mymod/sub1/__init__.py:
"""The sub1 __init__ docstr"""
from s1 import *
from s2 import *
Run Code Online (Sandbox Code Playgroud)
mymod/sub1/s1.py:
"""s1 docstr"""
def sub1():
"""sub1 docstr"""
return 3
Run Code Online (Sandbox Code Playgroud)
mymod/sub1/s2.py:
"""s2 docstr"""
def sub2():
"""sub2 docstr"""
return 4
Run Code Online (Sandbox Code Playgroud)
当我直接使用该模块时,它似乎按预期工作: …