我怎样才能保持由一个Python脚本调用的bat文件设置的系统环境

我在Python中调用.bat文件来设置系统环境,并检查系统环境设置是否正确,然后再运行python代码,将系统环境改回原来的状态。 我怎么解决这个问题?

环境设置总是发生在子进程中,永远不会直接影响父进程。 但是,你可以运行(在同一个子进程,改变了它的环境,在这个进程的最后)一个命令( env在类似Unix的环境中,我相信set.bat文件所在的DOS和Windows中.cmd文件是相似的)将环境输出到其标准输出或文件; 父进程可以读取该文件并将更改应用于其自己的环境。

在Unix中, subprocess.Popen('thescript; env', shell=True, stdout=...)就足够了。 在Windows中,我不确定作为第一个参数传递foo.bat; set foo.bat; set将工作; 如果没有,只需创建一个临时的“辅助蝙蝠”,然后set foo.bat然后运行该辅助蝙蝠。

我怀疑你是从Python程序调用批处理文件,然后返回到调用Python代码。 子进程 – 在这种情况下,您调用批处理文件 – 不会影响父进程(批处理文件)的环境。

设置环境的批处理文件通常写为:

 # set up my environment python myprogram.py 

在这种情况下,从属Python程序将继承调用批处理文件的环境。