2017-04-04 83 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']' –

相关问题