基本上,安装了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现在,我确实知道,从1/19/2019开始,flask_sqlalchemy和flask_api在已键入的文件中还没有存根文件,但我认为如果两个模块都安装在系统中,错误消息应该都是“模块没有库存根文件”,这两者之间有什么区别呢?
发布于 2019-01-20 04:11:12
这两条错误消息的含义是相同的。唯一的区别是,如果要导入的模块被认为是“受欢迎的”第三方库--特别是,如果它是模块在这个列表中之一,则会得到第一个错误消息。在本例中,flask_sqlalchemy是该列表的成员,但flask_api不是。
mypy特例这些模块的原因主要是为了可用性:当您似乎通过pip安装了模块时,获得“无法找到名为‘blah’的模块”这样的错误消息有点令人困惑。因此,它的特殊情况下的第三方图书馆可能会被普遍使用,以便它至少可以改善用户的体验。
您可能有一个后续问题:“为什么不直接查看pip安装的内容,并在尝试导入任何pip安装的内容时使用第一条错误消息?”毕竟,mypy需要这样做才能找到PEP 561兼容软件包 --声明它们与类型提示捆绑在一起的包。
嗯,mypy可能就是这么做的--但是这段代码基是在PEP 561之前添加的(在mypy真的需要扫描pip安装的软件包之前),而且我怀疑很长一段时间里没有人真正考虑过这个代码基的这个角落。
https://stackoverflow.com/questions/54266163
复制相似问题