2017-12-19 15 views
1

Ich versuche, ein Python 3-Skript über die Befehlszeile mit der Click-Bibliothek auszuführen, aber es scheint, dass es nicht so funktioniert wie es sollte.TypeError: 'str' Objekt kann nicht mit Python aufgerufen werden Klicken Sie auf Bibliothek

@click.option('--criteria', default='', type=click.STRING, envvar="CRITERIA")

, dass die gegebene Linie, die die TypeError: 'str' object is not callable wirft ist. Soll ich etwas anderes machen oder ist es eine Frage der Syntax?

UPDATE

Nachdem die Platzierung der criteria Option nur wenige Orte oben geändert, jetzt sehe ich, dass der erwähnte Fehler, bevor sie in der letzten platziert Option gegeben wird, unabhängig von der Art. Dies ist meine Methodensignatur und die Orte, an denen die Parameter verwendet werden.

@click.command('my_command', 'Initialize my_command') 
@click.option('--s1', type=click.STRING, envvar='S_1', 
       help='s1') 
@click.option('--s2', type=click.STRING, envvar='S_2', 
       help='s2') 
@click.option('--i', type=click.STRING, envvar="I") 
@click.option('--c', type=click.STRING, envvar="C") 
@click.option('--l', default='[]', type=click.STRING, envvar="L") 
@click.option('--st', default='[]', type=click.STRING, envvar="ST") 
@click.option('--s', default='[]', type=click.STRING, envvar="S") 
def my_command(s1, s2, i, c, l, st, s): 
    ... 

Traceback

Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 193, in _run_module_as_main 
    "__main__", mod_spec) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 85, in _run_code 
    exec(code, run_globals) 
    File "/project_root/__main__.py", line 27, in <module> 
    @click.command('my_command', 'Initialize my_command') 
    File "/project_root/venv/lib/python3.6/site-packages/click/decorators.py", line 115, in decorator 
    cmd = _make_command(f, name, attrs, cls) 
    File "/project_root/venv/lib/python3.6/site-packages/click/decorators.py", line 89, in _make_command 
    callback=f, params=params, **attrs) 
TypeError: 'str' object is not callable 
+5

Zeigen Sie den vollständigen Code und die vollständige Rückverfolgung. –

+0

Könnten Sie bitte etwas mehr von dem umgebenden Code zur Verfügung stellen? – rocksteady

+0

@DanielRoseman Entschuldigung für die Verzögerung. Überprüfen Sie das Update, wie ich überprüft habe und der Fehler für die letzte Option im Stapel von 'Option' wiederholt, auch wenn ich nur die click.command-Anotation belassen. –

Antwort

0

Dies ist das Problem:

@click.command('my_command', 'Initialize my_command') 

Dies ist die Unterschrift von click.command:

click.command(name=None, cls=None, **attrs) 

name Die Standardwerte für die Funktion nam e. Sie müssen es also nicht verwenden, weil Sie den Funktionsnamen trotzdem verwenden. Sie verwenden eine Zeichenfolge als cls, die standardmäßig click.Command ist.

So verwenden Sie es wie folgt aus:

@click.command(help='Initialize my_command') 
Verwandte Themen