我在Python 3.6中遇到了新的ModuleNotFoundError異常。它似乎是ImportError的一個子類。python3 - ModuleNotFoundError的用途
爲ImportError官方文件說:
當import語句有麻煩試圖加載模塊時引發。
通過進口時觸發模塊找不到。
真的有必要引入一個像ModuleNotFoundError這樣的異常嗎?它的目的是什麼?
謝謝!
P.S.你還可以提一下當導入語句「加載模塊時有問題」?
我在Python 3.6中遇到了新的ModuleNotFoundError異常。它似乎是ImportError的一個子類。python3 - ModuleNotFoundError的用途
爲ImportError官方文件說:
當import語句有麻煩試圖加載模塊時引發。
通過進口時觸發模塊找不到。
真的有必要引入一個像ModuleNotFoundError這樣的異常嗎?它的目的是什麼?
謝謝!
P.S.你還可以提一下當導入語句「加載模塊時有問題」?
嗯,我找到了答案;感謝@Felix提供的提示:)
在Python 3.6之前,如果找不到模塊或者在現有模塊中找不到子包,類,函數等,則會引發ImportError
。這意味着
import foo
和
from os import ImaginaryClass
都將給出一個ImportError
。在Python 3.6中,如果模塊不存在,則引發ModuleNotFoundError
,如果模塊存在但引發ImportError
,但子包或類或函數不存在(或者可能由於其他原因)。
import foo
將引發ModuleNotFoundError
和from os import ImaginaryClass
將引發Import Error
一個很好的開始研究將是相應的問題:https://bugs.python.org/issue15767 – Felix