点击和pylint
Posted
技术标签:
【中文标题】点击和pylint【英文标题】:Click and pylint 【发布时间】:2018-09-15 17:43:02 【问题描述】:这是一个导致 pylint 错误的 click 用法的简单示例:
@click.command()
@click.option('--option', is_flag=True)
def foo(option):
click.echo(option)
foo()
foo
没有收到任何参数,所以我得到 E1120(无参数值)。
所以我这样做了:
@click.command()
@click.option('--option', is_flag=True)
def foo(**kwargs):
click.echo(kwargs["option"])
foo()
有没有更好的方法? 或者一种在 Visual Studio Code 中仅对一行禁用 pylint 的方法?
【问题讨论】:
【参考方案1】:@click.command
装饰器编辑你的函数参数,但 pylint 不知道这一点,因为它实际上并没有运行你的代码。
我认为让你的代码变得奇怪只是为了让 pylint 高兴是没有意义的。相反,忽略它,或添加注释以在当前范围内禁用该警告:
# pylint: disable=no-value-for-parameter
【讨论】:
感谢您的回答。但是有没有办法将此异常仅应用于 VSC 中的一行/文件? 是的,将此注释添加到行尾 哇!我一开始没明白。 有没有办法告诉 pylint 在检查 @click-decorated 函数时总是禁用 no-value-for-parameter? (所以我不必在每个脚本中都这样做。) 据我所知没有。您可以全局禁用 no-value-for-parameter,但这听起来是个坏主意。【参考方案2】:有一种方法可以避免这些错误的发生,即不使用修饰语法。这可能是@Azsgy 所说的“奇怪”:-)
@click.option(
"--direction",
default="upgrade",
type=click.Choice(["upgrade", "downgrade"]),
help="Direction of migration upgrade/downgrade",
)
@click.argument("revision", default="heads")
def _main(direction, revision):
"""Runs migrations on each of the databases."""
pass
main = click.command()(_main)
if __name__ == "__main__":
main()
好不好看还有待商榷 :-)
【讨论】:
以上是关于点击和pylint的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio Code 打开.py代码报Linter pylint is not installed解决办法