如何从 python 中调用 python click ?

mat*_*ick 3 python command-line-interface read-eval-print-loop python-click

如果我错了,请纠正我,但似乎单击装饰器掩盖了函数默认值和构造。从 REPL 调用包装的 from 不会立即以与 REPL 相同的方式工作。例如,从 dask 分布式中看到这个:

@click.option('--bokeh-prefix', type=str, default=None,
              help="Prefix for the bokeh app")
@click.option('--preload', type=str, multiple=True, is_eager=True,
              help='Module that should be loaded by each worker process '
                   'like "foo.bar" or "/path/to/foo.py"')
@click.argument('preload_argv', nargs=-1,
                type=click.UNPROCESSED, callback=validate_preload_argv)
def main(scheduler, host, worker_port, listen_address, contact_address,
         nanny_port, nthreads, nprocs, nanny, name,
         memory_limit, pid_file, reconnect, resources, bokeh,
         bokeh_port, local_directory, scheduler_file, interface,
         death_timeout, preload, preload_argv, bokeh_prefix, tls_ca_file,
         tls_cert, tls_key): 
Run Code Online (Sandbox Code Playgroud)

是否有一些简单的模式可以获取该函数及其所有默认值?

use*_*527 6

据我推测,从这个问题来看,唯一的选择是

  1. 调用底层函数,如main.callback(*args). 那么您就缺少点击界面中的默认参数。

  2. 通过类似的方式使用点击测试界面click.testing.CliRunner().invoke(main, ['--host', '127.0.0.1'], catch_exceptions=False)

我想从我的角度来看,选项 1 是我们能做的最好的;默认参数只需手动完成。我也很好奇是否有更好的选择。