[英]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.