我在Python 3.6中遇到了新的ModuleNotFoundError异常。它似乎是ImportError的子类。
ImportError的官方文档说:
当import语句尝试加载模块时遇到问题。
无法找到模块时通过导入引发。
是否真的有必要引入像ModuleNotFoundError这样的异常?这是什么目的?
谢谢!
P.S。你还可以提一下import语句“加载模块时遇到问题”吗?
答案 0 :(得分:0)
好吧,我找到了答案;感谢@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