mypy: другое сообщение об ошибке для того же отсутствующего пакета - PullRequest
0 голосов
/ 19 января 2019

в основном, с установленными flask_api и flask_sqlalchemy (через pip3), если я запускаю mypy на этом

import flask_sqalchemy
import flask_api

сообщение об ошибке это

testMypy.py:1: error: No library stub file for module 'flask_sqlalchemy'
testMypy.py:1: note: (Stub files are from https://github.com/python/typeshed)
testMypy.py:2: error: Cannot find module named 'flask_api'
testMypy.py:2: note: See https://mypy.readthedocs.io/en/latest/running_mypy.html#missing-imports

Теперь я знаю, что по состоянию на январь / 19/2019, flask_sqlalchemy и flask_api не имеют заглушек в наборе (пока), но я думаю, что если в системе установлены оба модуля, сообщения об ошибках должны быть "Нет заглушки библиотеки для модуля ..", в чем разница между этими двумя?

1 Ответ

0 голосов
/ 20 января 2019

Два сообщения об ошибках означают одно и то же.Единственное отличие состоит в том, что вы получаете первое сообщение об ошибке, если импортируемый вами модуль считается «популярной» сторонней библиотекой, в частности, если это один из модулей в этом списке .В этом случае flask_sqlalchemy является членом этого списка, но flask_api - нет.

Причина, по которой mypy в особых случаях использует эти модули, в основном для удобства использования: получение сообщения об ошибке несколько сбивает с толкунапример, «Не удается найти модуль с именем« бла »», когда вы, казалось бы, установили его через pip.Таким образом, это специальные случаи сторонних библиотек, которые, вероятно, будут широко использоваться, так что это может, по крайней мере, улучшить взаимодействие с пользователем там.

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

Что ж, mypy, вероятно, может делать это - но этот раздел кодовой базы был добавлен до того, как PEP 561 стал чем-то особенным (до того, как mypy действительно нужно было сканировать пакеты, установленные в pip), и я подозреваю, что никто долго не думал об этом углу кодовой базывремя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...