簡體   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