如何将设置环境变量的批处理脚本与python脚本(3.7)集成?

问题描述 投票:0回答:1

我正在运行一个使用批处理文件中的环境变量的python脚本。脚本被调用后,这些变量会丢失。下面是一个代码的例子(example.py)。

subprocess.Popen(env.cmd, shell=True).wait()

ENV_HOME = str(os.environ["ENV_HOME"])

我得到了KeyError,因为ENV_HOME没有被定义。我知道我可以使用 os.environ 来设置环境变量,以便我的脚本能够工作,但是 env.cmd 是一个非常大的文件,它设置了很多我需要的路径,以便 python 脚本能够工作。可以把env.cmd读到python脚本中,但是由于有很多路径需要设置,我正在寻找一种更简单的方法来整合环境变量和python脚本。

我一直在使用的一个变通方法是创建另一个 cmd 脚本。

call C:\Users\env.cmd

python example.py

如果我使用这个过程,ENV_HOME就会被定义。

python environment
1个回答
0
投票

在子进程中设置的环境变量不能被父进程使用,这只是环境设计的方式。如果要将子进程的环境值传递给父进程,需要子进程使用约定的格式输出它的环境值(在标准输出或约定的文件中)(JSONCSV 在这里很有效),然后让父程序处理该输出,并相应地设置其环境。

顺便说一下,这不是一个Python的问题,我在过去写的shell脚本中也曾处理过类似的问题。

© www.soinside.com 2019 - 2024. All rights reserved.