python from __future__ import absolute_import

from __future__ import absolute_import

1.使用以上语句则启动绝对导入

会从 sys.path 里寻找所有名为 x 的顶层模块

2.而相应的相对导入则采用.

比如一个 package 下有 a.py 和 b.py 两个文件,在 a.py 里 from . import b 即是相对导入 b.py。

区别

PEP 328中:

1
2
3
4
5
6
7
8
9
10
package/
__init__.py
subpackage1/
__init__.py
moduleX.py
moduleY.py
subpackage2/
__init__.py
moduleZ.py
moduleA.py
1
2
3
4
5
6
7
8
from .moduleY import spam
from .moduleY import spam as ham
from . import moduleY
from ..subpackage1 import moduleY
from ..subpackage2.moduleZ import eggs
from ..moduleA import foo
from ...package import bar
from ...sys import path

一个.表示从当前目录寻找

两个.表示从父目录寻找

更多的.则从更高层级的目录寻找