首页 > 解决方案 > 如何将设置环境变量的批处理脚本与python脚本(3.7)集成?

问题描述

我正在运行一个使用批处理文件中的环境变量的 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。

标签: pythonenvironment

解决方案


子进程中设置的环境变量对父进程不可用 - 这正是环境的设计方式。如果要将环境值从子进程传递给父进程,则需要该子进程使用约定的格式(JSONCSV在这里可以很好地工作)输出其环境(在标准输出或约定文件中) ),然后让父进程输出,并相应地设置其环境。

顺便说一句,这不是 Python 问题,我不得不在过去编写的 shell 脚本中处理类似问题。


推荐阅读