我还没有遇到这个问题,但我很好奇如何导入与子包同名的模块。例如,一个可能的模块结构可能如下所示:
mymodule\
__init__.py
string.py
现在,如果我需要 mymodule.string
子包和 string
模块,每个 Python 发行版都从一个包中提供是否在同一目录下,例如 __init__.py
?以下代码行全部导入子包。
from . import string
import mymodule.string as string
import string
最佳答案
在 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
关于Python:如何导入与子包同名的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9384969/