【问题标题】:os.environ.get return None, but echo works properlyos.environ.get 返回无,但回显工作正常
【发布时间】:2020-07-17 11:24:24
【问题描述】:

我对“os.environ.get”命令有疑问。我使用以下方法导出了我的变量:

export MYVAR="123"

然后我用了:

echo "$MYVAR"

它返回了我的价值。但是当我在 python 中做时

print(os.environ.get('MYVAR'))

它返回无。例如:

print(os.environ.get('HOME'))

工作正常。我尝试使用 bashrc、zhrsc、bash_profile,但它从来没有用过。我正在使用 Linux Elementary 5.1。我该如何解决这个问题?

【问题讨论】:

  • 哪个 shell 你是从哪个 shell 导出变量的? Python 是那个 shell 的 new 子进程吗?
  • 在进行 export 时,它仅适用于当前 shell,因此如果 python 代码在其他地方运行,则它没有 i
  • export VARIABLE 仅将该变量导出到由该特定 shell 启动的新子进程。使用bashrcbash_profile 告诉新shell 将该变量包含在其导出的变量列表中。 现有 进程不会看到新变量,因为它们从未从父进程那里继承。
  • 但是当我使用 bashrc 时它仍然看不到我的变量。
  • 这适用于我的 bash:export MYVAR="123"; python -c "import os; print(os.environ.get('MYVAR'))"

标签: python bash ubuntu elementary


【解决方案1】:

看起来您的环境变量导出仅限于您正在使用的外壳。 如果您在系统范围内设置环境变量,它也可以在您的 python 代码中读取。

在 /etc/environment 中为基于 Unix 的系统设置环境变量

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多