2011-12-22 110 views
0

我在GNU/Linux系統中的Windows系統中的PATH中有我的DVCS Mercurial。如果我在GNU/Linux中打開Bash shell,我可以執行hg(Mercurial命令),如果我在Windows中打開命令提示符,也是如此。使用Python在PATH上執行命令

我想執行hg並檢查退出狀態並捕獲輸出。我知道子進程模塊和check_output。但我無法使用我的PATH。我希望不要硬編碼路徑,因爲只要您的路徑上有Mercurial,我希望腳本能夠工作。

一個例子將不勝感激。

節日快樂!

回答

2

如果您的路徑中已有hg,則在調用subprocess時應該不需要任何特殊功能,因爲您應該獲得相同的環境。

無論如何,如果你想在PATH環境變量顯式地添加到您的子進程,你可以這樣做:

env = os.environ.copy() 
env['PATH'] = <whatever you need here> 
subprocess.Popen(<hg command>, env=env) 

此代碼拷貝你從你的shell獲取和環境覆蓋PATH變量。如果您打算使用相同的env字典來運行其他命令,則可能需要追加到PATH

有沒有必要複製整個環境,但這將防止其他問題發生,因爲缺少其他環境變量。