我的 ypy 如何忽略源文件中的一行?

我在 Python 项目中使用 我的天进行类型检查。我还使用 PyYAML 读写项目配置文件。不幸的是,当使用 从 PyYAML 文档中推荐的导入机制时,这会在尝试导入本机库的 try/夹杂子句中产生一个假错误:

from yaml import load, dump
try:
from yaml import CLoader as Loader, CDumper as Dumper
except ImportError:
from yaml import Loader, Dumper

在我的系统 CLoaderCDumper不存在,这导致了错误 error: Module 'yaml' has no attribute 'CLoader'error: Module 'yaml' has no attribute 'CDumper'

有没有一种方法可以让我忽略这一行中的错误?我希望我可以做一些类似的事情,让我自己跳过那句台词:

from yaml import load, dump
try:
from yaml import CLoader as Loader, CDumper as Dumper  # nomypy
except ImportError:
from yaml import Loader, Dumper
128282 次浏览

版本0.2开始,您可以忽略 # type: ignore的类型错误(参见问题 500英镑,忽略特定的台词) :

PEP 484 使用 # type: ignore作为 忽略特定行上的类型错误..。

另外,使用接近文件 一起检查那个文件顶部的 # type: ignore

资料来源: 我的500英镑

还有 # mypy: ignore-errors在文件的顶部你要忽略所有的作品,如果你使用的是 shebang 和编码行应该是这样的:

#!/usr/bin/env python
#-*- coding: utf-8 -*-
# mypy: ignore-errors

Gvanrossum 评论

当然,这个问题的答案是在行尾添加 # type:ignore,这样就可以让 my 忽略它。

当我在谷歌上搜索如何忽略 django 迁移的文件时,
这个问题好几次被我重新评论。

因此,我发表了一篇关于如何忽略姜戈迁移的文章:

# mypy.ini
[mypy-*.migrations.*]
ignore_errors = True

对于 mypy > = 0.910,pyproject.toml 是受支持的,可以设置如下:

[tool.mypy]
python_version = 3.8
ignore_missing_imports = true


[[tool.mypy.overrides]]
module = "*.migrations.*"
ignore_errors = true