Python:环境变量未更新

原学程将引见Python:情况变质未革新的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

Python:环境变量未更新 教程 第1张

成绩描写

我正在测验考试笼罩到Python中的情况变质。我不妨读与值,而后写进值并挨印革新后的值。然则,假如我检讨敕令言中的值,它依然是原初值。为何会如许?

起首,我创立了变质

export MYVAR=old_val

我的尝试剧本myvar.py

#!/usr/bin/env python三
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

如您所睹,输入的最初1言依然显示old_val

推举谜底

简称:

python剧本变动其情况。然则,这没有会影响女过程(外壳)的情况

长版原:

这是1个尽人皆知的成绩,但是异常使人迷惑。

您必需晓得的是,出有情况,每一个过程皆有本身的情况。

是以,在下面的示例中,外壳(在个中输出代码)只要1个情况。
当您挪用./myvar.py时,将创立以后情况的正本并将其传播给您的python剧本。
您的代码"仅"变动了该情况的正本。
1旦完成了Python剧本,这个正本便会被烧毁,而且外壳法式将瞅到其初初的未修正情况。

年夜多半操纵体系(Windows、Linux、MS-DOS等)皆是如斯

换句话说:所有子过程皆不克不及变动挪用它的过程的情况。

在bash中有1个窍门,您不妨夺取剧本,而没有是将其作为过程挪用。

然则,假如您的python剧本开动了另外一个过程(比方/bin/bash),则子过程将瞅到修正后的情况。

佳了闭于Python:情况变质未革新的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。