怎么在__init__中使用sphinx自动机模块和暴露函数

本教程将介绍如何在__init__中使用sphinx自动机模块和暴露函数的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么在__init__中使用sphinx自动机模块和暴露函数 教程 第1张

问题描述

我的文件夹结构如下:

project/
 mymodule/
  __init__.py
  m1.py
  m2.py
  sub1/
__init__.py
s1.py
s2.py

mymod/__init__.py

"""The __init__ docstr"""
from m1 import *
from m2 import *

mymod/m1.py

"""m1 doc str"""
def func1():
 """func1 docstr"""
 return 1

mymod/m2.py

"""m2 doc str"""
def func2():
 """func2 docstr"""
 return 2

mymod/sub1/__init__.py

"""The sub1 __init__ docstr"""
from s1 import *
from s2 import *

mymod/sub1/s1.py

"""s1 docstr"""
def sub1():
 """sub1 docstr"""
 return 3

mymod/sub1/s2.py

"""s2 docstr"""
def sub2():
 """sub2 docstr"""
 return 4

当我直接使用该模块时,它似乎按预期工作:

>>> import mymod
>>> from mymod import sub1
>>> mymod.func1()
1
>>> sub1.subfunc1()
3
>>> mymod.__doc__
'The __init__ docstr'
>>> mymod.func1.__doc__
'func1 docstr'

但是,当我在Shinx中使用自动模块时(在将项目文件夹添加到我的sys.path之后):

.. automodule:: mymod
 :members:

.. automodule:: mymod.sub1
 :members:

我得到的页面只有:

The __init__ docstr
The sub1 __init__ docstr

它似乎忽略了from m1 import *类型语句...

但是,如果我将所有代码直接复制到我得到的每个模块/子模块的__init__文件中:

The __init__ docstr

mymod.func1()
func1 docstr

mymod.func2()
func2 docstr

The sub1 __init__ docstr

mymod.sub1.sub1()
sub1 docstr

mymod.sub1.sub2()
sub2 docstr

是Shinxautomodule不能使用__init__文件中包含这些导入语句的模块,还是我遗漏了一个更明显的问题?

理想情况下,我希望得到这样的输出:将所有代码放入init(改为使用导入语句)。

推荐答案

如果请问__all__列表添加到__init__.py文件中,它将起作用。例如:

"""The __init__ docstr"""

__all__ = ['func1', 'func2']

from m1 import *
from m2 import *

好了关于怎么在__init__中使用sphinx自动机模块和暴露函数的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。