Set Environment Variable for Subsequent Script¶
Keywords: Environment Variable, shell script, python script.
定义问题¶
有一个 main.py
脚本, 功能是打印 EnvName
环境变量.
# -*- coding: utf-8 -*-
# content of main.py
import os
print(os.environ.get("EnvName"))
我们知道如果在 main.py
代码中加入 os.environ["EnvName"] = "local"
就可以在运行 Python 程序的时候设置.
但有的时候你这个 main.py
是一系列 bash command 中的一环, 你不能修改这个 main.py
, 你希望在运行这个之前对环境变量进行设置, 并期待在 main.py
内部被捕获到. 这应该怎么做呢?
方法 1, 在 terminal 中修改环境变量¶
$ export EnvName="local" # 注意, EnvName="local" 只是为你的当前 shell session 的上下文设置了一个变量. 而这不是环境变量.
$ python main.py
local
方法 2, 在 shell script 中修改环境变量¶
#!/bin/bash
# content of run.sh
export EnvName="local"
python main.py
方法 3, 在 python shell script 中修改环境变量¶
# -*- coding: utf-8 -*-
# content of run.py
import os
import subprocess
os.environ["EnvName"] = "local"
subprocess.call(["python", "main.py"])