Как отличить «модуль не найден» от «модуль выдал исключение» в ImportError?
-
13-09-2019 - |
Вопрос
В Python, import does_not_exist
поднимает ImportError
, и
import exists
exists.py
:
import does_not_exist
также поднимет ImportError
.
Как мне определить разницу в коде?
Решение
Единственный известный мне метод - проверить, существует ли имя модуля верхнего уровня в сообщении исключения или нет:
try:
import exists
except ImportError as exc:
if "exists" in str(exc):
pass
else:
raise
Может ли это быть запрос на функцию ImportError Python?Конечно, было бы удобно иметь переменную для имени модуля.
Другие советы
Вы можете использовать tb_next обратной трассировки.Оно будет отличаться от «Нет», если исключение произошло в другом модуле.
import sys
try:
import exists
except Exception, e:
print "None on exists", sys.exc_info()[2].tb_next == None
try:
import notexists
except Exception, e:
print "None on notexists", sys.exc_info()[2].tb_next == None
>>> None on exists False
>>> None on notexists True
Не связан с StackOverflow