python - 是否可以在 Python 中更改父进程的环境?

标签 python linux environment

在 Linux 中,当我从 shell 调用 python 时,它会复制其环境,并启动 python 进程。因此,如果我执行以下操作:

import os
os.environ["FOO"] = "A_Value"

当python进程返回时,FOO,假设它最初是未定义的,仍然是未定义的。 python进程(或任何子进程)有没有办法修改其父进程的环境?

我知道你通常使用类似的方法来解决这个问题

source script_name.sh

但这与我的其他要求相冲突。

最佳答案

任何进程都不能更改其父进程(或任何其他现有进程的环境)。

但是,您可以通过使用修改后的环境创建新的交互式外壳来创建新环境。

您必须生成一个新的 shell 副本,该副本使用升级后的环境并可以访问现有的标准输入、标准输出和标准错误,并进行重新初始化。

您需要执行类似使用 subprocess.Popen 运行 /bin/bash -i 的操作。

所以原来的 shell 运行 Python,它运行一个新的 shell。是的,您有很多进程正在运行。不,这并不算太糟糕,因为原始 shell 和 Python 并没有真正做任何事情,只是等待子 shell 完成,这样它们也可以干净地退出。

关于python - 是否可以在 Python 中更改父进程的环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/263005/

相关文章:

python - 另一个类中的 tkinter 变量

python - 来自包内的 imp.load_source

linux - 用于识别最易受内存性能影响的应用数据/代码的工具

linux - Ubuntu错误?仅在以 root 身份登录后的环境变量

python - 解包值过多时出现错误(预期2)

python - 使用 XLwings 将变量从 Excel 传递到 Python

Linux 上的 C : using fclose() on Filepointers made from Socket descriptors

linux - 关于 Linux 内核中的 gcov 输出?

java - 为什么我们将 bin 目录添加到环境变量中的路径?

angular - 在为生产构建时更改 remoteServiceBaseUrl