Python:如何导入与子包同名的模块?

Python:如何导入与子包同名的模块?,python,import,module,Python,Import,Module,我还没有遇到这个问题,但我很好奇如何导入与子包同名的模块。例如,可能的模块结构如下所示: mymodule\ __init__.py string.py 现在,如果我需要mymodule.stringsubpackage和string模块,该模块随每个Python发行版一起从同一目录下的包(例如\uu init\uuuuu.py)交付,该怎么办?以下代码行全部导入子包 from . import string import mymodule.s

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

mymodule\
    __init__.py
    string.py
现在,如果我需要
mymodule.string
subpackage
string
模块,该模块随每个Python发行版一起从同一目录下的包(例如
\uu init\uuuuu.py
)交付,该怎么办?以下代码行全部导入子包

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

您不必将其作为顶级导入

只需导入mymodule.string,
foo=mymodule.string.baz()
,等等


如果确实想将子包作为
string
使用,可以将其作为
string
导入,但首先在Python 2.5或2.6中执行类似于
将string作为内置安装导入的操作,您可以使用:

>>> from __future__ import absolute_import
这告诉Python,所有不是显式相对的导入都应该被视为绝对导入。也就是说,使用此声明后,您可以通过以下方式访问内置字符串模块和您自己的字符串模块:

>>> import string as the_builtin_string_module
>>> from . import string as my_package_string_module
我相信这将成为Python2.7(和Python3.0)中的默认设置


有关更多信息,请参阅:

我认为这行不通。内置安装程序最终将成为mymodule.string。