常见问题¶
一般¶
Windows上的Shell变量扩展¶
我有一个简单的Click应用程序:
import click
@click.command()
@click.argument('message')
def main(message: str):
click.echo(message)
if __name__ == '__main__':
main()
当您在参数中传递环境变量时,它会扩展它:
> Desktop python foo.py '$M0/.viola/2025-01-25-17-20-23-307878'
> M:/home/ramrachum/.viola/2025-01-25-17-20-23-307878
>
请注意,我在上面使用了单引号,因此我的Shell没有扩展环境变量,而Click则扩展了环境变量。如何让Click不扩展它?
回答¶
如果您不想单击在Windows上模拟(尽可能)unix扩展,请在调用CLI时传递Windows_expand_args=False。Windows命令行不执行任何 *、~或$ENV扩展。它也不区分双引号和单引号(后者的意思是“不要在这里扩展”)。Click模拟扩展,以便应用程序在两个平台上的行为相似,但不会接收有关使用的引言的信息。