Python:环境变量未更新

RayJ_inSJ

我正在尝试覆盖Python中的环境变量。我可以读取值,然后写入值并打印更新的值。但是,如果我在命令行中检查该值,则它仍然是原始值。这是为什么?

首先,我创建变量

export MYVAR=old_val

我的测试脚本 myvar.py

#!/usr/bin/env python3
import os
print (os.environ['MYVAR'])
os.environ['MYVAR'] = "new_val"
print (os.environ['MYVAR'])

产出

$ ./myvar.py 
old_val
new_val
$ echo $MYVAR
old_val

如您所见,输出的最后一行仍然显示 old_val

Gelonida

简洁版本:

python脚本更改其环境。但是,这不会影响父进程(shell)的环境。

长版:

好吧,这是一个众所周知的问题,但很令人困惑。

您需要知道的是,没有环境,每个进程都有自己的环境。

因此,在上面的示例中,外壳程序(您在其中键入代码)具有一个环境。调用时./myvar.py,将创建当前环境的副本并将其传递到python脚本。您的代码“仅”更改此环境副本。python脚本完成后,此副本将被销毁,并且外壳程序将看到其最初的未修改环境。

对于大多数操作系统(Windows,Linux,MS-DOS等),都是如此。

换句话说:没有任何子进程可以更改称为它的进程的环境。

在bash中,有一个窍门,您在其中采购脚本而不是将其称为进程。

但是,如果您的python脚本启动了另一个进程(例如/bin/bash),则子进程将看到修改后的环境。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

环境变量未更新

来自分类Dev

环境变量未更新

来自分类Dev

环境变量未识别

来自分类Dev

CF 更新环境变量

来自分类Dev

更新环境变量和路径变量

来自分类Dev

Python激活环境变量

来自分类Dev

设置环境变量python

来自分类Dev

环境变量中的Python环境变量

来自分类Dev

SSH未传递LANG环境变量

来自分类Dev

Webpack未为环境变量赋值

来自分类Dev

在bash中更新环境变量

来自分类Dev

pycharm不使用环境变量更新

来自分类Dev

使用Docker更新容器的环境变量

来自分类Dev

在Shell脚本中更新环境变量

来自分类Dev

Xcode预操作运行python脚本环境变量,未正确设置$ {PROJECT_DIR}

来自分类Dev

使用python查找环境变量中未包含的系统路径

来自分类Dev

Xcode预操作运行python脚本环境变量,未正确设置$ {PROJECT_DIR}

来自分类Dev

导入在Python中创建环境变量?

来自分类Dev

使用Python持续更改环境变量

来自分类Dev

如何让python程序监听环境变量?

来自分类Dev

在Python中使用环境变量

来自分类Dev

Python无法识别环境变量

来自分类Dev

从环境变量读取python字典

来自分类Dev

保存python环境变量的位置

来自分类Dev

通过反射的Python环境变量

来自分类Dev

Python没有设置环境变量

来自分类Dev

禁用环境变量的python自动转义

来自分类Dev

如何让python程序监听环境变量?

来自分类Dev

导入在Python中创建环境变量?