为什么python的不同导入形式对于循环导入的行为有所不同?

时间:2014-09-10 18:55:05

标签: python

我正在创建一个具有以下目录结构的python 2.7库:

$ pwd
~/code/myproject
$ tree
.
|- myproject
|   |-- __init__.py
|   |-- exception.py
|   |-- myproject.py

以下是三个文件的内容:

$ cat __init__.py
import myproject
$ cat myproject.py
from . import exception
$ cat exception.py
from . import myproject

当我从第二个项目导入这个新库时,在raise:

中有一个例外
Traceback (most recent call last):
  <snip>
  File "~/code/myproject/myproject/exception.py", line 1, in <module>
    from . import myproject
ImportError: cannot import name myproject

据我所知,修复方法是将exception.py的内容更改为:

import myproject

......但我不知道为什么。所有最佳实践似乎都建议对包中的文件使用相对导入。当exception.py从from . import myproject更改为import myproject时,为什么导入行为会发生变化?

0 个答案:

没有答案