我在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程序将继承调用批处理文件的环境。