我在Python中调用.bat文件来设置系统环境,并检查系统环境是否设置正确,然后返回运行python代码,将系统环境更改回原始版本。我该如何解决这个问题?
答案 0 :(得分:3)
环境设置始终在子进程中发生,并且永远不会直接影响父进程。但是你可以运行(在同一个子进程中,在该进程的最后更改了它的环境)一个命令(env
在类Unix环境中,我相信set
在DOS中.bat
.cmd
1}}文件存在于Windows中并且在subprocess.Popen('thescript; env', shell=True, stdout=...)
文件相似的Windows中)将环境输出到其标准输出或文件;父进程可以读取该文件并将更改应用于自己的环境。
在Unix中,foo.bat; set
可能就足够了。在Windows中,我不确定传递,因为第一个参数foo.bat
会起作用;如果没有,只需创建一个微小的临时“辅助蝙蝠”,然后执行set
然后{{1}},然后运行该蝙蝠。
答案 1 :(得分:1)
我怀疑你是从Python程序调用批处理文件然后返回调用Python代码。子进程(在本例中是对批处理文件的调用)不会影响父进程(批处理文件)的环境。
设置环境的批处理文件通常写为:
# set up my environment
python myprogram.py
在这种情况下,从属Python程序将继承调用批处理文件的环境。