2017-04-04 88 views
-1

我有一個python腳本,這將安裝一個應用程序:如何在安裝程序後刷新系統路徑/變量?

os.system("path/to/my.exe /VERYSILENT") 

當我這樣做,比如我會安裝的Git

後來,應用程序將調用:

os.system("git --version") 

從而未能通話,因爲它不知道什麼是飯桶。

從它看起來像什麼,當你import os所有抓住系統變量等,所以我可以在安裝應用程序重新導入操作系統後不知何故,然後繼續?

我希望的最終狀態是刷新CMD,類似於如何關閉終端並打開新終端。

回答

1

子shell(如os.system(..))不能影響父進程的執行環境(這將是一個巨大的安全漏洞)。您可以使用例如更新永久用戶環境Powershell([environment]::SetEnvironmentVariable($key, $val, "User"))。任何後來啓動的進程都會看到新的環境變量(這就是爲什麼你需要關閉你的cmd窗口並開始一個新的環境變量。)

+0

安裝git時,它會安裝在命令行中使用git的能力。 ,這很容易,但爲什麼不在這裏?它不是那麼容易,但應該有一些刷新,或者似乎只是在* os.system(...)* – Fallenreaper

+0

_Why_你會添加'import os'認爲在將某些東西安裝到子shell中時,這會起作用(請記住,環境變量是您在調用啓動新進程時發出的東西)。它可以從命令行運行,因爲安裝程序會設置兩次環境變量:首先它設置User env變量,然後它在當前shell中設置env var – thebjorn

+0

'import os'只獲取進程啓動的環境,它不得到任何更新。您可以將'git'目錄添加到'os.environ ['path']' –

相關問題