2017-04-03 25 views
0

我在Python 3.6中遇到了新的ModuleNotFoundError異常。它似乎是ImportError的一個子類。python3 - ModuleNotFoundError的用途

ImportError官方文件說:

當import語句有麻煩試圖加載模塊時引發。

對於ModuleNotFoundError

通過進口時觸發模塊找不到。

真的有必要引入一個像ModuleNotFoundError這樣的異常嗎?它的目的是什麼?

謝謝!

P.S.你還可以提一下當導入語句「加載模塊時有問題」?

+2

一個很好的開始研究將是相應的問題:https://bugs.python.org/issue15767 – Felix

回答

0

嗯,我找到了答案;感謝@Felix提供的提示:)

在Python 3.6之前,如果找不到模塊或者在現有模塊中找不到子包,類,函數等,則會引發ImportError。這意味着

import foo

from os import ImaginaryClass

都將給出一個ImportError。在Python 3.6中,如果模塊不存在,則引發ModuleNotFoundError,如果模塊存在但引發ImportError,但子包或類或函數不存在(或者可能由於其他原因)。

import foo將引發ModuleNotFoundErrorfrom os import ImaginaryClass將引發Import Error