【问题标题】:os.environ.get returns variable as 'None', even though it can be echoed in terminal. (Python) (Mac OS Catalina)os.environ.get 将变量返回为“无”,即使它可以在终端中回显。 (Python) (Mac OS Catalina)
【发布时间】:2021-02-04 10:40:50
【问题描述】:

我正在尝试调用已在 .bash_profile 文件中导出的变量。就是这样写的。

export TEST='test'

在 .bash_profile 文件中保存此更改后,我在终端中输入:

source ~/.bash_profile

在终端输入env 后,会显示TEST=test。此外,在输入echo $TEST 时,终端返回test

我遇到的问题是,当我尝试使用 Pycharm 将此变量调用到 python 脚本中时,脚本返回 None

代码是:

import os

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

如何让脚本输出test

还值得注意的是,这一切都是在 Conda 虚拟环境中完成的。

我做错了什么?

【问题讨论】:

  • 您的.bash_profile 是说export TEST='test' 还是只是TEST='test'
  • 你是如何开始 Pycharm 的?它可能不是从您的 shell 环境或其后代开始的。
  • 环境属于一个进程,由子进程继承。它不是您的登录会话或类似的属性。
  • @MisterMiyagi 它说 export TEST='test'
  • 我假设您正在双击 Pycharm 图标来启动应用程序,并且我还假设有一种方法可以从命令行启动 Pycharm(这可能导致Pycharm 进程成为您的登录 shell 的子/后代)。

标签: python bash macos environment-variables miniconda


【解决方案1】:

我遇到了同样的问题。刚刚想通了:

在 Catalina 中,Mac 现在使用 zsh 而不是 bash shell,因此变量存储在主目录中的 .zshenv 文件中,而不是 .bash_profile

  1. 转到您的主目录:

    cd $HOME

  2. 访问您的环境变量文件:

    nano .zshenv

  3. 创建变量

    TEST='test'(如果你只打算直接从终端使用它)

    export TEST2='test2'(如果你想用os.environ.get访问它)

    保存并退出终端。打开另一个终端窗口并检查您是否可以使用以下方法访问该变量:

echo $TEST
echo $TEST2
  1. 使用 python 访问变量
import os
username = os.environ.get('TEST2')
print(username)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    • 2020-07-17
    • 2022-11-04
    • 2018-05-11
    • 2021-04-10
    • 2021-08-10
    • 1970-01-01
    相关资源
    最近更新 更多