try:
import MySQLdb
# some action
except ImportError as err:
# fallback code
PyCharm дает предупреждение о проверке кода:
'MySQLdb' в блоке try с 'except ImportError' также должен быть определен за исключением блока
Эта проверка обнаруживает имена, которые должны быть разрешены, но нет. Из-за динамической отправки и утиной печати это возможно в ограниченном, но полезном числе случаев. Элементы верхнего уровня и уровня класса поддерживаются лучше, чем элементы экземпляра.
Хорошо, я думал, что предупреждение разумно, потому что fallback code
предполагает, что 'MySQLdb' не установлен, в то время как это может быть некоторая другая ошибка, которая только что подняла ImportError. Поэтому я использовал что-то вроде:
try:
import MySQLdb
# some action
except ImportError as err:
if "MySQLdb" in repr(err):
# fallback code
else:
raise
Предупреждение PyCharm все еще существует, но это может быть просто проблема PyCharm (google показывает проблемы с такими проверками)
Вопросы:
-
Действительно ли стоит проверять имя, когда вы "за исключением ImportError"? Даже в простых случаях (нет
some action
послеimport MySQLdb
)? -
Если это стоит проверить, Правильно ли это приведенный выше пример? Если нет - какой правильный путь?
P.S. MySQLdb - это всего лишь пример модуля, который может отсутствовать в системе.