os.getenv('CORENLP_HOME')返回无,而os.environ ['CORENLP_HOME']返回KeyError但回显$ CORENLP_HOME返回终端中的路径

问题描述 投票:0回答:1

我知道存在很多类似的问题,但我无法理解这里正在发生什么。我正在尝试遵循有关此Stanford CoreNLP python包装器here的说明,步骤之一是设置CORENLP_HOME环境变量。

我运行了命令:

export CORENLP_HOME=/path/to/stanford-corenlp-full-2018-10-05

重新启动终端,或实际上将其添加到我的~/.bash_profile中。现在,当我在终端中执行echo $CORENLP_HOME时,我就能正确看到路径。但是另一方面,如果corenlp包装器代码试图通过python代码找到相同的路径,则它将返回None

所以我分别检查了两个python命令,包装代码使用os.getenv()

import os 

print(os.getenv('CORENLP_HOME')) #prints None
print(os.environ['CORENLP_HOME']) #Throws a KeyError exception

MacOS版本:10.15.4; Python:3.7.6

通常,我对环境变量没有很深入的了解,我想了解这里发生的事情,或者如果我缺少简单的东西。乐意提供更多信息!

python environment-variables stanford-nlp
1个回答
0
投票

环境变量在UNIX流程模型中不是全局的。每个进程由启动它的父进程提供一组环境变量。通常,这是父级环境变量的copy。如果您不是从运行export命令的shell启动pycharm,则pycharm不会看到该shell的环境变量。

您描述的行为意味着您不是从执行export CORENLP_HOME=/path/to/stanford-corenlp-full-2018-10-05的shell中启动pycharm。

P.S.,UNIX进程模型还意味着一个进程无法修改其他进程的环境变量。

© www.soinside.com 2019 - 2024. All rights reserved.