为什么 ipython env 变量与关联的终端模拟器中的 bash env 不匹配?



最近我一直在用Python做一些交互工作。

我的设置是一个运行在服务器上的IPython笔记本,它使用网格引擎来管理作业。

今天我试图得到一个ippython集群按照下面的例子发布在这里,使用subprocess.Popen启动一个集群。

我无法让这个例子工作,所以我试着打开IPython/Jupyter终端模拟器,输入ipcluster start命令,集群就启动了!

在玩了一段时间后,我意识到,如果我在终端模拟器中输入env,我得到的环境变量列表与我在Python中查看os.environ变量时不同。问题的根源似乎是PATH变量不同。

现在我知道我可以改变os.environ中的PATH变量,但我想知道为什么它首先是不同的?我对环境变量所知甚少,所以这可能是一个愚蠢的问题,但是我会假设在完全相同的IPython笔记本服务器的完全相同的节点上运行的终端模拟器和笔记本应该具有完全相同的环境变量。

对于终端和笔记本中的环境变量可能不同的任何见解将非常感激。

Update:以防万一,我正在使用的服务器使用Univa网格引擎。我还注意到,我是否使用qrshqsub来启动笔记本服务器似乎有所不同。

以前我一直使用qsub,但是通过使用qrsh启动笔记本服务器,我消除了envos.environ之间的许多差异。分歧仍然存在,但要少得多。我还是不确定这是什么意思:)

根据qsub, qsh, qrsh的手册页面,使用-V选项将当前shell环境传播到作业:

 -V     Available for qsub, qsh, qrsh with command and qalter.
        Specifies that all environment variables active within the qsub utility be exported to the context of the job.
        All environment variables specified with -v, -V or the DISPLAY variable provided with -display will be exported to the defined JSV  instances  only  optionally  when  this  is
        requested explicitly during the job submission verification.  (see -jsv option above or find more information concerning JSV in jsv(1))

最新更新