我有一个看起来像的文件夹结构:
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'
但是,当我在sphinx中使用自动模块时(将项目文件夹添加到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
sphinx是否automodule
不适用于__init__
文件中具有此类导入语句的模块,还是我遗漏了一个更明显的问题?
理想情况下,当我将所有代码放入 init 时,我希望得到类似的输出(改为使用import语句输入)。
如果将__all__
列表添加到__init__.py
文件中,它将起作用。例如:
"""The __init__ docstr"""
__all__ = ['func1', 'func2']
from m1 import *
from m2 import *
问题内容: 我一直在阅读有关文件的功能。据说我们在包含模块的文件夹中需要一个空文件,以便可以导入这些模块。但是,我尝试将文件夹路径添加到PYTHONPATH(Windows 7中为环境变量)。尽管此文件夹不包含文件,但我仍然可以从该文件夹导入模块。您能否解释一下在不存在的情况下如何导入这些模块? 谢谢, 最好的祝福 问题答案: 把一个文件夹变成一个包。这对于创建某种模块层次结构很有用,您可以在其中
问题内容: 我试图了解关于Python(v2.7)导入机制的最佳实践。我有一个项目开始有所增长,可以说我的代码如下组织: 包名称为,在其下方,我有一个模块,其中包含该类的代码。因此,我对包,模块和类使用了相同的名称,但起初可能不太聪明。 为空,需要导入类,因此文件的一部分如下所示: 但是我后来又重新考虑了这一点,并且我认为最好在文件中包含所有导入内容。因此,我现在看起来像: 而我只需要导入: 虽然
问题内容: 我正在尝试为我的一个模型编写函数,以便可以通过执行以下操作创建对象: 当我编写模型时,我有: 这样可以正常工作,我可以将对象保存到数据库中,但是当我这样做时,除非我拿出函数,否则它不会拉任何东西。有任何想法吗? 问题答案: 依靠Django的内置功能并传递命名参数将是最简单的方法。 但是,如果您打算保存一些击键,建议您向类添加一个静态便捷方法,而不要弄乱初始化程序。
问题内容: 我正在学习Python,但无法弄清楚导入的工作方式。 我从Python教程中了解到该文件初始化了一个程序包,并且可以在此处导入子程序包。 不过,我做错了。您能为我(以及将来的Python学习者)解释我做错了什么吗? 这是我正在尝试做的一个简化示例。 这是我的文件结构: 内容: 是空的。 包含: 最后,包含: 这就是我尝试使用OSX终端和Python 3运行hello_world.py的
我创建了express应用程序,有一条路线可以使用许多中间件: 这是我的中间件。js: 它工作得很好。但当我试着写测试时遇到了问题。这是我的测试,我使用mocha、chai、supertest和sinon: 问题是什么 您可以看到有3个存根,1个用于,2个用于在路由的同一个文件中。 问题是,2个存根工作,而1个用于<代码>中间件。saveUser不工作,请始终触发原始用户。 我想,当我调用setu
我正在使用内核3.16并尝试使用LZ4压缩内存中的数据。我检查了内核源代码树,找到了压缩源文件/lib/lz4。c和我使用了以下函数: 但我得到了以下错误: 我的源代码: 我试图找到一些关于LZ4如何在内核模块中工作的示例,但什么也没有找到。我不知道是否有人有在内核模块中进行压缩的经验。 谢啦!