当前位置: 首页 > 面试题库 >

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

聂永怡
2023-03-14
问题内容

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

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

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

我知道您通常使用类似的方法解决此问题

source script_name.sh

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


问题答案:

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

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

您必须生成使用升级环境并可以访问现有stdin,stdout和stderr的Shell的新副本,并进行其重新初始化。

您需要执行类似use subprocess.Popen的操作/bin/bash -i

因此,原始外壳运行Python,而新外壳运行。是的,您正在运行许多进程。不,还算不错,因为原始的shell和Python除了等待子shell完成以使它们也可以干净退出之外,实际上并没有做任何事情。



 类似资料:
  • 问题内容: 在Python中,是否可以在运行时重新定义函数的默认参数? 我在这里定义了带有3个参数的函数: 接下来,我尝试(未成功)设置y的默认参数值,然后尝试调用不带参数的函数: 但是由于未正确设置默认值,所以产生了以下错误: 正如我在此尝试的那样,是否可以在运行时重新定义函数的默认参数? 问题答案: 只需使用functools.partial 这里的一个问题:您将无法调用它,因为您应该手动说

  • 问题内容: 例: 数组仍保留其原始值,是否可以通过迭代函数对数组元素进行写访问? 问题答案: 回调传递给元素,索引和数组本身。 编辑 -如注释中所述,该函数可以采用第二个参数,该参数将用作每次对回调的调用中的值: 第二个例子说明了自己是在回调中设置的。有人可能认为调用中涉及的数组可能是的 默认 值,但无论出于何种原因,它都不是。会如果没有提供第二个参数。 (注意:如果回调是一个函数,则上述内容不适

  • 为下面的代码生成的字节代码在类中创建一个字段。当为可变字段赋值时,原始委托不会更改。 有没有一种方法可以在运行时更改委托,同时保持实现? 该示例取自https://kotlinlang.org/docs/reference/delegation.html文档并经过编辑。

  • 问题内容: 是否可以“监视”指令上的ui更改?像这样的东西: 问题答案: 是。您可以使用,如果你在属性利用插值。 但是,如果这不是一个插值属性,并且您希望它可以从应用程序中的其他位置更改(绝对不建议这样做,请阅读Common Pitfalls ),那么函数可以返回: 无论如何,对您来说最好的方法可能是更改更改元素类的代码。它何时更改?

  • 正如标题所说:是否可以在路由(-builder)的流程功能中启动一个驼峰endpoint?我刚接触apache camel,但已经做了一些项目。 情况如下:我正在使用apache camel和西门子Teamcenter RAC执行一个SavedQuery。结果是一个ModelObject[]和找到的元素。 对于这些元素中的每一个,我现在需要启动另一个endpoint,执行第二个搜索查询。我想到了这

  • 问题内容: 我只看到了在类定义中设置方法的示例。是否可以在其定义中或定义它们后更改for函数? 我尝试没有成功… 问题答案: 是的,如果您愿意放弃该功能实际上是一个功能。 首先,为我们的新类型定义一个类: 添加装饰器功能: 现在我们可以定义repr和函数了: 现在生产