首页 > 解决方案 > 使用临时环境变量运行 Python 脚本

问题描述

我有一个 Python 应用程序,它利用 Kubernetes 配置中的环境变量,例如:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
  namespace: default
data:
  var1: foo
  var2: bar

---

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  namespace: default
spec:
  containers:
    - envFrom:
      - configMapRef:
          name: my-config

因此,当应用程序被 Docker 化并在 Kubernetes 场上运行时,这很好。

但是,当在没有 Docker 和 Kubernetes的本地机器上运行应用程序时,只需一个简单的命令:

python app.py

os.getenv('var1')即使没有 ConfigMap 或 Pod,我也必须让 Python 模块找到环境变量。

是否可以不需要在 Python 模块中添加额外的代码或向本地机器系统添加环境变量?

标签: pythonenvironment-variables

解决方案


在 shell 中,您还可以在调用脚本之前简单地临时为环境变量分配值。根本不需要改变你的脚本。

考虑以下app.py仅打印环境变量ENV_PARAMENV_PARAM2

#!/usr/bin/env python3
import os

print(os.environ['ENV_PARAM'])
print(os.environ['ENV_PARAM2'])

当未设置变量并且您这样称呼它时

python app.py

你会得到一个KeyError.

键错误:'ENV_PARAM'

当您改为在同一行中指定值并像这样调用它时

ENV_PARAM='foo' ENV_PARAM2='bar' python app.py

它工作正常。输出:

foo
bar

这不会设置环境变量,所以如果你这样做

echo "$ENV_PARAM"  

之后,它什么也不会返回。环境变量只是临时设置的,就像您需要的那样。


推荐阅读