当我在顶级包之外进行相对导入时,我得到了一个例外——这并不奇怪。但为什么它是 aValueError
而不是 a ImportError
?
$ find .
.
./b
./b/c.py
./b/__init__.py
./a.py
$ cat a.py
import b.c
$ cat b/c.py
from .. import time_machine
$ python a.py
Traceback (most recent call last):
File "a.py", line 1, in <module>
import b.c
File "/tmp/a/b/c.py", line 1, in <module>
from .. import time_machine
ValueError: Attempted relative import beyond toplevel package
我本来期望ImportError
, 因为这个异常与导入包有关,并且通常给出ImportError
(或其子类ModuleNotFoundError
)。这里的理由是什么?