python - 如何将设置环境变量的批处理脚本与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。
解决方案
子进程中设置的环境变量对父进程不可用 - 这正是环境的设计方式。如果要将环境值从子进程传递给父进程,则需要该子进程使用约定的格式(JSON或CSV在这里可以很好地工作)输出其环境(在标准输出或约定文件中) ),然后让父进程输出,并相应地设置其环境。
顺便说一句,这不是 Python 问题,我不得不在过去编写的 shell 脚本中处理类似问题。
推荐阅读
- cython - 在 Cython 中键入字符串列表
- ios - React-Native:在项目或这些目录中找不到 React
- mysql - 如何在mysql中的group by中查找组内的重复项?
- c# - 错误:无法在此范围内声明名为“模型”的局部变量
- python - 将变量整数转换为列表中的个位数单词形式
- python - 使用 .loc 选择多索引级别的重复值
- bash - 通过目录停止文件的无限循环
- ipython - 在 cmd.exe 下的 IPython 中取消缩进代码块?
- vba - Excel VBA - 将电子邮件移动到不同的文件夹
- windows - Batch:如何在 CALL 函数内部正确使用 CHOICE?