在Python脚本中使用shell变量不起作用

2024-06-17 11:55:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个shell脚本,其中某些参数被设置为:
k.sh:

export var="value"
export val2="value2"

然后我有一个python脚本,我在其中调用shell脚本并希望使用这些环境变量
<1>示例:

^{pr2}$

但是我得到了KeyError
如何在Python脚本中使用这些shell变量?在


Tags: 脚本示例参数valuevarsh环境变量export
3条回答

subprocess.call在新进程中启动一个shell,该进程调用source。无法从子流程修改流程中的环境。在

您可以源代码k.sh运行Python one liner将os.environ的内容打印为JSON。然后在主进程中使用json.loads将输出转换回dict:

import subprocess
import os
import json
PIPE = subprocess.PIPE
output = subprocess.check_output(
    ". ~/tmp/k.sh && python -c 'import os, json; print(json.dumps(dict(os.environ)))'",
    shell=True)
env = json.loads(output)
print(env["var"])

收益率

^{pr2}$

如果要设置环境然后运行Python脚本,那么,设置环境并使用runner运行Python脚本:

跑步者

#! /bin/bash
. k.sh
exec ex1.py

就这样。在

ex1.py

^{pr2}$

相关问题 更多 >