此bounty已结束。回答此问题可获得+100声望奖励。赏金宽限期15小时后结束。alfalfasprout正在寻找典型答案。
我想将使用click编写的python CLI集成到使用另一个框架构建的python CLI应用程序中。重写调用应用程序不是一个选项。
作为集成的一部分,我需要从代码中调用clickCLI,传递它应该直接使用的参数。我该怎么做?
举一个具体的例子,假设我将它作为foobar theclickcli <args>
调用,其中foobar
是未在click中编写的CLI,theclickcli
是一个子命令,它应该调用我的click CLI及其参数(<args>
)。
我看到click提供了click.testing.CLIRunner
类,允许调用组或命令。然而,文件指出:
“...[this]应该只用于测试,因为它们为了简单而改变了整个解释器状态,并且无论如何都不是线程安全的。
有没有一种“惯用”的方式来调用clickCLI(而不仅仅是一个子命令),给定一个argv
参数列表(如argparse中)?
1条答案
按热度按时间flvlnr441#
您可以手动创建新的Context对象,并使用Context调用命令。invoke()方法。例如: