繁体   English   中英

在子流程中调用包装器脚本

[英]calling wrapper script in subprocess

我有一个wrapperexec ,应该调用exec和一些参数。

subprocess.check_call( ["wrapperexec", "exec", "arg1"], shell=True, cwd="/dirA" )

当我调用上述脚本时,它不会将任何参数传递给wrapperexec 但是当我更改为:

subprocess.check_call( ["wrapperexec", "exec", "arg1"], shell=False, cwd="/dirA" )

它确实按预期传递参数。 有人可以向我解释,为什么前者不起作用?

编辑:

抱歉,创建此问题时我走错了路。 现在已更新为实际问题。

环境path是一个复杂的概念,所有对象都共享“基本” path ,但是您也可以在特定过程中临时修改或附加该path 这意味着,如果您修改脚本中的path ,然后调用subprocess ,则该subprocess将不会具有与父脚本相同的path

除非您执行以下操作:

subprocess.check_call(["nonsystemexec"], shell=True, cwd="/dirA", env=os.environ)

在这里,您告诉subprocess使用当前环境,其中将包括当前path


注意:如果要让subprocess使用修改后的env,但不要使用相同的env。 您可以执行以下操作:

env = os.environ.copy()
env['PATH'] += ';/dirB'
subprocess.check_call(["nonsystemexec"], shell=True, cwd="/dirA", env=env)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM