Два сообщения об ошибках означают одно и то же.Единственное отличие состоит в том, что вы получаете первое сообщение об ошибке, если импортируемый вами модуль считается «популярной» сторонней библиотекой, в частности, если это один из модулей в этом списке .В этом случае flask_sqlalchemy
является членом этого списка, но flask_api
- нет.
Причина, по которой mypy в особых случаях использует эти модули, в основном для удобства использования: получение сообщения об ошибке несколько сбивает с толкунапример, «Не удается найти модуль с именем« бла »», когда вы, казалось бы, установили его через pip.Таким образом, это специальные случаи сторонних библиотек, которые, вероятно, будут широко использоваться, так что это может, по крайней мере, улучшить взаимодействие с пользователем там.
Еще один вопрос, который у вас может возникнуть: «Почему Mypy просто не выглядитна что установлен pip и использовать первое сообщение об ошибке всякий раз, когда вы пытаетесь импортировать что-нибудь это установленный pip? ".В конце концов, mypy нужно сделать это в любом случае, чтобы попытаться найти PEP 561-совместимые пакеты - пакеты, которые объявляют, что они поставляются в комплекте с подсказками типов.
Что ж, mypy, вероятно, может делать это - но этот раздел кодовой базы был добавлен до того, как PEP 561 стал чем-то особенным (до того, как mypy действительно нужно было сканировать пакеты, установленные в pip), и я подозреваю, что никто долго не думал об этом углу кодовой базывремя.