python - 在 Linux 中通过管道设置和使用环境变量

标签 python linux environment-variables pipe

如何在一个脚本中设置环境变量,并在将输出通过管道传输到另一个脚本后,我需要在第一个脚本中设置某些环境变量并在第二个脚本中使用。

我正在使用 python 脚本。

python script1.py | python script2.py

script1.py 中,我正在做

os.environ["some_key"] = some_value

script2.py 中,我试图将其读作

saved_value = os.environ["some_key"]

当我尝试如上所述运行上述脚本时,

Traceback (most recent call last):
  File "script2.py", line 11, in <module>
    filename = os.environ["some_key"]
  File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
    raise KeyError(key)

这有什么可以纠正的吗?我特别需要从 script2.py 中的 os.environ["some_key"] 读取它,因为该文件是更大框架的一部分,无法更改它。我可以灵活地使用 script1.py

最佳答案

不可能设置另一个进程的环境变量 - 除非你自己启动它

如果可以,请考虑更改 script1 以使用 subprocess.Popen 直接启动 script2,并提供 env 争论。

如果您不能这样做,您将需要更改父进程(可能是启动脚本的 bash 脚本)以某种方式从 script1 接收所需的变量并设置它启动 script2 时。

关于python - 在 Linux 中通过管道设置和使用环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747760/

相关文章:

python - 无法停止 Jupyter Notebook

python - 如何更新数据帧值

linux - 在 Linux 上安装 lispbuilder-SDL 时出现问题。 - "Don' t 知道如何要求 ASDF-INSTALL"

environment-variables - Capistrano:我可以为整个 cap session 设置一个环境变量吗?

c++ - 如何在 log4cpp 属性文件中使用环境变量

python - 从 sqlite3 确定最大列数

python - 在 Discord.py 中获取公会的所有成员

linux - -w 在 perl 脚本进程执行中指定什么

c++ - 为什么 mac 和 linux 的结果不同?

node.js - 如何从 Node 的 .env 文件引用环境变量?