【问题标题】:Environment variables don't last after being set (in a container)环境变量在设置后不会持续(在容器中)
【发布时间】:2021-01-21 23:39:13
【问题描述】:

我不知道在 docker 容器内是否与问题有任何关系,但为了记录,我是在容器内运行的。

我尝试运行这个脚本

import os

os.environ['A_VAR']='aValue'
thevalue=os.environ.get('A_VAR',None)
print(thevalue)

我将环境 A_VAR 设置为某个值,我可以从设置的打印中看到它

然后我运行以下命令

import os
'
thevalue=os.environ.get('A_VAR',None)
print(thevalue)

不,没有设置值。

运行 ``printenv` 也显示未设置值。

为什么设置环境变量不起作用以及应该如何完成?

【问题讨论】:

    标签: python-3.x docker environment-variables


    【解决方案1】:

    环境变量是本地的,设置它的进程和从它产生的所有进程(它们继承环境)。因此,您可以为子进程设置环境,但不能为父进程设置环境。

    您的 python 脚本作为自己的进程运行,因此当该进程退出时,它对环境所做的任何更改都会消失。

    【讨论】:

    • 那么,有没有什么办法可以通过脚本来设置环境变量,并保持不变?还是不可能?
    • 只有发生在同一个进程中才有可能,例如,一个 shell 脚本是源代码而不是执行的。
    • 我明白了。所以需要一个shell脚本,不能用python...
    猜你喜欢
    • 1970-01-01
    • 2017-05-11
    • 2015-01-03
    • 2019-07-21
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多