【问题标题】:When do system variables update in IPython kernel?IPython 内核中的系统变量何时更新?
【发布时间】:2017-01-30 05:53:05
【问题描述】:

我通过jupyter notebook 开始了一个笔记本,然后创建了一个新笔记本。

然后,我去了终端,我设置了 PATH:

export PATH=$PATH:<absolute path>

但是,当我回到 IPython 笔记本时,我尝试打印这个新的系统变量:

import os
print(os.environ["PATH"].split(os.pathsep))

但是,我没有看到我刚刚添加的&lt;absolute path&gt;??

我什至尝试重新启动内核,但这根本没有帮助。我能做些什么?谢谢。

编辑

我试图通过终端刷新我的环境变量:bash --login,但这根本没有帮助。

另外,另一个特别的地方是,当我在 ipython 中手动将其添加到系统路径时:

os.environ['PATH'] = os.environ['PATH'] + os.pathsep + <absolute path>

...它在我添加它的笔记本和内核中运行良好。但是,当我启动另一个 IPython 内核时,它不再位于 PATH 上。

我在osx

【问题讨论】:

  • 进程启动时继承环境变量。因此,IPython 内核从 Jupyter 笔记本服务器获取它们,后者从您运行 jupyter notebook 的 shell 获取它们。一旦启动,您就无法更改另一个进程的环境变量。您可以在 IPython 内核中更改 os.environ,或者停止笔记本服务器并从您已进行更改的 shell 再次启动它。
  • 作为答案,我会接受。

标签: python macos environment-variables ipython jupyter-notebook


【解决方案1】:

当你这样做时

export PATH=$PATH:<absolute path>

在终端中,仅在该终端会话中有效。也就是说,这个export命令对其他终端会话没有影响。

如果你想让你的 PATH 环境一直有效,你需要编辑你的 .bashrc 文件,并且

source ~/.bashrc

激活它。

【讨论】: