我试图通过使用ruamel.yaml的模块来使用MyPy,但是Mypy找不到ruamel.yaml,即使Python找到它也没有问题。我很困惑,因为我也找不到名为YAML.py的模块或名为YAML的类,尽管这些语句在Python语言中可以工作:
from ruamel.yaml import YAML
yaml = YAML()
x = yaml.load()我需要做什么才能让MyPy识别ruamel.yaml?
发布于 2018-09-06 00:34:28
您不应该查找文件YAML.py。中的YAML
yaml = YAML()是在ruamel/yaml/main.py中定义并导入到ruamel/yaml/__init__.py中的类(都在site-packages下)。这就是你为什么这么做的原因:
from ruamel.yaml import YAML(另一种方法是在ruamel目录下有一个文件yaml.py,但是加载程序/转储程序太多了,不能放在一个文件中)。
如果上面的知识不能帮助您解决问题,那么可以显式地使用set the global flag mypy_path或环境变量MYPYPATH。这必须包括目录ruamel所在的目录。
(我在文档中找不到它,但是从源代码( mypy/build.py:mypy_path() )中可以看到,这应该是一个在os.pathsep上被拆分的字符串(在我的基于Linux的系统上是冒号(:)
发布于 2019-07-09 21:19:36
我也有同样的问题。
即使在设置MYPYPATH=./..venv/lib/python3.7/site-package之后也是如此
临时“解决方案”正在忽略缺少的导入异常
类型--忽略-缺失-导入
发布于 2020-12-10 02:45:40
一种解决方法是运行时不使用mypy的增量逻辑:
python -m mypy --no-incremental myfile.py背景
mypy中存在一个已知问题,请参阅here。
总而言之:
当遇到ruamel时,mypy的增量逻辑不能正常工作。
python -m mypy myfile.pyerror: Skipping analyzing 'ruamel': found module but no type hints or library stubs [import]
https://stackoverflow.com/questions/52189217
复制相似问题