Python:如何导入与子包具有相同名称的模块?

时间:2012-02-21 20:52:07

标签: python import module

我还没有遇到过这个问题,但我很好奇如何导入一个与子包具有相同名称的模块。例如,可能的模块结构可能如下所示:

mymodule\
    __init__.py
    string.py

现在,如果我需要mymodule.string子包,那么与同一目录中的包中的每个Python发行版一起提供的string模块,如__init__.py?以下代码行 all 导入子包。

from   .                import string
import mymodule.string  as string
import string

2 个答案:

答案 0 :(得分:2)

在Python 2.5或2.6中,您可以使用:

>>> from __future__ import absolute_import

告诉Python所有非明确相关的导入都应该被视为绝对的。即,使用此声明后,您可以使用以下命令访问内置字符串模块和您自己的字符串模块:

>>> import string as the_builtin_string_module
>>> from . import string as my_package_string_module

我相信这成为Python 2.7(和Python 3.0)的默认设置。

有关详细信息,请参阅:http://www.python.org/dev/peps/pep-0328/#rationale-for-absolute-imports

答案 1 :(得分:0)

您不必将其作为顶级导入导入。

只需import mymodule.stringfoo = mymodule.string.baz()

如果你真的想要将子包用作string,你可以import将它作为string,但首先要执行import string as builtinstring

之类的操作