11

这似乎是 python-click 的一个普遍问题,但是在谷歌的任何地方都没有提到它。

如果我尝试运行最简单的 python 点击​​脚本,比如 realpython中的以下内容

import click

@click.group()
def greet():
    pass


@greet.command()
def hello(**kwargs):
    pass


@greet.command()
def goodbye(**kwargs):
    pass

if __name__ == '__main__':
    greet()

Intellij 调试器完全用错误消息轰炸:

Error: no such option: --multiproc

我已经用多个 python-click 脚本尝试过这个并且调试永远不会工作。有没有其他人注意到这一点,有没有办法解决这个问题?

4

1 回答 1

25

当您没有将任何参数传递给单击入口点时,就会出现问题。在这种情况下,click 会要求特定于平台的函数来获取它的 args,get_os_args()这与 sys.argv 无关。

结果效果是调试器所需的参数也传递给了点击解析器,有效地激活了点击中的错误。

解决方案是显式传递sys.argv[1:]给将覆盖默认get_os_args()行为的点击入口点:

import sys
if __name__ == '__main__':
    greet(sys.argv[1:])
于 2016-11-23T21:56:34.643 回答