如何在Python中重新加载环境变量?

4
我设置了一个systemctl服务(Jupyter),作为Hadoop集群的引导程序的一部分。在引导动作完成后,安装了Hadoop。在此过程中,设置了许多环境变量 - 这些对于我的服务Jupyter至关重要。问题是,Jupyter不知道这些环境变量,因为它在进程早期启动。
我的问题是:如何重新加载用户的环境变量?当前用户运行Jupyter时,可以找到所有环境变量 - 我只需要将它们加载到Python解释器中。
这会失败:os.environ ['JAVA_HOME'] 但在解释器中却工作正常(因为JAVA_HOME 在Jupyter启动之后被定义)。

1
环境变量在进程启动时是本地的,并从父进程继承。我认为你无法从该进程外部设置它们。您可以在该进程中设置它们,但需要建立某种方式来传递它们(例如将其放入文件中,并定期读取并将其设置为该进程的本地线程)。 - LhasaDad
@LhasaDad 谢谢您的解释,这正是我最终所做的。我很乐意接受那个作为答案。 - Lukasz Tracewski
感谢,我已将其作为答案添加 @Lukasz - LhasaDad
1个回答

2

当进程启动时,环境变量是局部的,并从父进程继承。我认为你无法从该进程外部设置它们。你可以在该进程中设置它们,但你需要建立一些方式来传递它们(例如将它们放入文件中,并有某个线程定期读取并将其设置为该进程的本地变量)。


嗨,LhasaDad,您能否提供更多关于在Jupyter笔记本中设置环境变量的详细步骤吗?谢谢。 - infinity_coding7
os.environ['JAVA_HOME'] ="path" 应该可以工作,也就是说设置这个值将在运行的进程中生效。 - LhasaDad
好的,我明白了,这对我有用。但是我只是好奇你加载所有环境变量的工作流程是什么?你是将这些加载环境变量的行放在一个文件中还是怎样?谢谢。 - infinity_coding7
我是根据进程和环境继承的一般知识来回答的。我不经常使用Jupyter笔记本。我的回答更多地来自于一般的Python编程。 - LhasaDad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接