Python:导入包含的包

在一个包内部的模块中,我需要使用该包的__init__.py中定义的函数。 我如何导入包内的模块,所以我可以使用该function?

在模块中导入__init__将不导入包,而是导入名为__init__的模块,导致具有不同名称的事件的两个副本…

有没有pythonic的方式来做到这一点?

另外,从Python 2.5开始,相对导入是可能的。 例如:

 from . import foo 

http://docs.python.org/tutorial/modules.html#intra-package-references引用:;


从Python 2.5开始,除了上面描述的隐式相对导入之外,还可以使用import语句的from模块import nameforms编写显式相对导入。 这些显式的相对导入使用前导点来表示相对导入中涉及的当前和父包。 例如,从周围的模块可以使用:

 from . import echo from .. import formats from ..filters import equalizer 

这并不完全回答你的问题,但我会build议你移动__init__.py文件之外的函数,并将其移入该包内的另一个模块。 然后,您可以轻松地将该function导入到其他模块中。 如果你愿意,你可以在__init__.py文件中有一个导入语句来导入这个函数(导入包的时候)。

如果软件包名为testmod并且你的init文件是testmod/__init__.py并且你的软件包中的模块是submod.py那么你可以从submod.py文件中import testmod并使用你想要的在testmod中定义。

在Django中,文件manage.py from django.core.management import execute_manager ,但execute_manager不是一个模块。 它是management目录的__init__.py模块中的一个function。

我不完全确定情况是什么,但是这可能解决你的“不同的名字”问题:

 import __init__ as top top.some_function() 

或者可能?:

 from __init__ import some_function some_function()