我正在创建一个具有以下目录结构的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
时,为什么导入行为会发生变化?