为什么“尝试从顶级包进行相对导入”是ValueError而不是ImportError?

时间:2019-03-07 16:32:17

标签: python package importerror valueerror relative-import

当我在顶级程序包之外进行相对导入时,我会遇到一个例外,这并不奇怪。但是为什么它是ValueError而不是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)。这里的理由是什么?

0 个答案:

没有答案