当前位置:  开发笔记 > 编程语言 > 正文

Python:导入包含的包

如何解决《Python:导入包含的包》经验,为你挑选了3个好方法。

在驻留在包内的模块中,我需要使用在该__init__.py包内定义的函数.我如何在包内的模块中导入包,所以我可以使用该功能?

__init__在模块内导入不会导入包,而是导入一个名为的模块__init__,导致两个具有不同名称的东西副本...

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



1> Brian Clappe..:

此外,从Python 2.5开始,可以进行相对导入.例如:

from . import foo

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


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

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



2> mipadi..:

这并不能完全回答你的问题,但我建议你将函数移到__init__.py文件之外,然后移到该软件包中的另一个模块中.然后,您可以轻松地将该功能导入到其他模块中.如果需要,您可以在__init__.py文件中包含导入该语句的导入语句(导入包时).


+1 - 在你的包中使用`common.py`是Python中非常常见的做法.
不知道这是怎么'unpythonic'?因为__init__.py不是真正的模块,所以替代方案不会更加混乱吗?
+1,这就是我做的,它对我来说看起来像pythonic

3> Eli Courtwri..:

如果程序包已命名testmod并且您的init文件因此testmod/__init__.py而且程序包中的模块是submod.py来自submod.py文件,那么您应该能够说出import testmod并使用testmod中定义的任何内容.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有