最上位のパッケージを超えて相対インポートを行うと、例外が発生します — 驚くことではありません。しかし、なぜそれはであり、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
。ここでの根拠は何ですか?