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