与选项关联的帮助字符串中的Python单击错误

与选项关联的帮助字符串中的Python单击错误,python,python-click,Python,Python Click,我正在尝试学习如何使用Python单击。我无法在我的一个选项中使用帮助参数,因此我最终放弃并更改了代码,使其不包含该选项的帮助。然而,尽管关闭并重新启动Python,现在重新启动我的计算机,但与尝试使用help参数相关的错误消息仍然出现 代码: 最初是我最后一次@click.option @click.option('--search_phrase', '-s', multiple=True, help='The search phrase to use') 我不断收到一条错误消息,无法解决与

我正在尝试学习如何使用Python单击。我无法在我的一个选项中使用帮助参数,因此我最终放弃并更改了代码,使其不包含该选项的帮助。然而,尽管关闭并重新启动Python,现在重新启动我的计算机,但与尝试使用help参数相关的错误消息仍然出现

代码: 最初是我最后一次@click.option

@click.option('--search_phrase', '-s', multiple=True, help='The search phrase to use')
我不断收到一条错误消息,无法解决与未知参数相关的问题帮助。我放弃了它,改成了上面的东西,现在我得到了一个类似的错误

然后关闭Python,关闭模块,然后重新启动Python,再次打开并运行代码,仍然收到此错误消息

回溯:
回溯(最近一次呼叫最后一次):
文件“C:\Program Files\PYTHON\snipTables\test\u snip\u click.py”,第14行,在
@单击.option('--search_phrase','-s',multiple=True)
文件“C:\Program Files\PYTHON\lib\site packages\click\decorators.py”,第148行,位于decorator中
_参数备忘录(f,ArgumentClass(参数decls,**属性))
文件“C:\Program Files\PYTHON\lib\site packages\click\core.py”,第1618行,在__
参数.\uuuu init\uuuu(self,param\u decls,required=required,**attrs)
TypeError:\uuuu init\uuuuuuuuuu()获得意外的关键字参数“help”
因此,我关闭了Python Idle,保存并关闭了代码,然后重新启动Python,重新打开了代码,但我仍然得到了相同的回溯,只是注意到回溯中有一行代码是我在用力敲击监视器并放弃之后切换到的

我正准备重新启动,但我真的很好奇的原因

我重新启动,但仍然收到相同的错误


重命名文件并再次运行不会改变结果-相同的回溯

可能您重命名了源文件,并且运行的是使用以前的名称编译的旧版本


尝试删除*.pyc文件

可能您重命名了源文件,并且正在运行使用以前的名称编译的旧版本


尝试删除*.pyc文件

问题是单击不接受带有参数的帮助字符串。这是一种有趣的行为。与参数关联的帮助字符串将是处理参数和选项的函数中的字符串

错误消息将始终显示为与最后一个选项关联。所以这个例子的正确代码应该是

import click

def something():
    pass

@click.command()
@click.argument('dest_dir',type=click.Path(exists=True, readable=True,
                resolve_path=True, dir_okay=True)
##Notice no help string here

@click.option('--use_terms', is_flag=True, 
              help='Process strings based on terms or phrases')
@click.option('--use_query', is_flag=True, help='Process string based on
               search query')
@click.option('--search_phrase', '-s', multiple=True)


def do_process(dest_dir,use_terms,use_query,*search_phrase):
""" testing setting parameters for snip tables"""
    outref = open('e:\\myTemp\\testq.txt')
    ms = dest_dir + '\n'
    if use_terms:
        ms += use_term + '\n'
    else:
        ms += use_query + '\n'
    for each in search_phrase:
        x = something()
        ms += each + '\n'
    outref.writelines(ms)
    outref.close()



if __name__ == "__main__":
    do_process()

运行良好我最初遇到的问题是click没有很好地解释错误的来源。如上所述,即使我去掉了选项中的帮助字符串,单击解析器也会将参数中的帮助字符串与其解析的最后一个选项相关联。

问题在于单击不接受带有参数的帮助字符串。这是一种有趣的行为。与参数关联的帮助字符串将是处理参数和选项的函数中的字符串

错误消息将始终显示为与最后一个选项关联。所以这个例子的正确代码应该是

import click

def something():
    pass

@click.command()
@click.argument('dest_dir',type=click.Path(exists=True, readable=True,
                resolve_path=True, dir_okay=True)
##Notice no help string here

@click.option('--use_terms', is_flag=True, 
              help='Process strings based on terms or phrases')
@click.option('--use_query', is_flag=True, help='Process string based on
               search query')
@click.option('--search_phrase', '-s', multiple=True)


def do_process(dest_dir,use_terms,use_query,*search_phrase):
""" testing setting parameters for snip tables"""
    outref = open('e:\\myTemp\\testq.txt')
    ms = dest_dir + '\n'
    if use_terms:
        ms += use_term + '\n'
    else:
        ms += use_query + '\n'
    for each in search_phrase:
        x = something()
        ms += each + '\n'
    outref.writelines(ms)
    outref.close()



if __name__ == "__main__":
    do_process()

运行良好我最初遇到的问题是click没有很好地解释错误的来源。尽管我去掉了选项中的帮助字符串,但单击解析器将参数中的帮助字符串与其解析的最后一个选项相关联。

我想知道,但再次注意到,正确的代码行位于trace@click.option(“--search_phrase',“-s',multiple=True”)中,我一直在寻找pyc文件,但在谷歌上找不到它之后,我确认当代码在空闲状态下运行时,不会创建.pyc文件。仅当导入模块时。但是,跟踪仍然显示当前行的错误哦,你是对的,这不是问题所在。你有没有注意到你的第12行有一个字符串打断了下一行?这是无效的语法-是否只有在复制粘贴到堆栈溢出时才使用?或者这也存在于您的代码中?这是从复制粘贴到中,所以我总是在格式化方面遇到困难。在您的位置上,我要做的是进入
单击
库源代码并尝试理解它(是的,对于开源)。您的回溯在第1618行显示异常,但在github中查看该行似乎不相关,因此我猜github版本与您计算机上的版本不同。我想知道,但再次注意,正确的代码行位于trace@click.option('--search_phrase','-s',multiple=True)中,我一直在寻找pyc文件,但在谷歌上找不到它之后,我确认当代码在空闲状态下运行时,不会创建.pyc文件。仅当导入模块时。但是,跟踪仍然显示当前行的错误哦,你是对的,这不是问题所在。你有没有注意到你的第12行有一个字符串打断了下一行?这是无效的语法-是否只有在复制粘贴到堆栈溢出时才使用?或者这也存在于您的代码中?这是从复制粘贴到中,所以我总是在格式化方面遇到困难。在您的位置上,我要做的是进入
单击
库源代码并尝试理解它(是的,对于开源)。您的回溯显示了第1618行的异常,但在github中查看该行似乎不相关,所以我猜github版本与您计算机上关于结束问题的版本不同-我确实发布了我所有的代码以及回溯,所以如果您不能复制这一点,那么我会说您可能更正确-但是如果您可以,我认为这是关于结束问题的相关问题-是的发布我所有的代码和回溯,如果你不能复制它,那么我会说你可能更正确,但如果你可以,我认为这是一个相关的问题
import click

def something():
    pass

@click.command()
@click.argument('dest_dir',type=click.Path(exists=True, readable=True,
                resolve_path=True, dir_okay=True)
##Notice no help string here

@click.option('--use_terms', is_flag=True, 
              help='Process strings based on terms or phrases')
@click.option('--use_query', is_flag=True, help='Process string based on
               search query')
@click.option('--search_phrase', '-s', multiple=True)


def do_process(dest_dir,use_terms,use_query,*search_phrase):
""" testing setting parameters for snip tables"""
    outref = open('e:\\myTemp\\testq.txt')
    ms = dest_dir + '\n'
    if use_terms:
        ms += use_term + '\n'
    else:
        ms += use_query + '\n'
    for each in search_phrase:
        x = something()
        ms += each + '\n'
    outref.writelines(ms)
    outref.close()



if __name__ == "__main__":
    do_process()