最近我一直在用 Python 做一些交互性的工作。
我的设置是在使用网格引擎管理作业的服务器上运行的 IPython 笔记本。
今天,我试图按照发布的 here 示例使 IPython 集群运行,该示例使用 subprocess.Popen
启动集群。
我无法让示例工作,所以我尝试打开 IPython/Jupyter 终端仿真器并输入 ipcluster start
命令,集群立即启动!
玩了一段时间后,我意识到如果我在终端模拟器中输入 env
,我得到的环境变量列表与在 Python 中查看 os.environ
变量时不同。问题的根源似乎是 PATH
变量不同。
现在我知道我可以更改 PATH
中的 os.environ
变量,但我想知道为什么它首先不同?我对环境变量知之甚少,所以这可能是一个愚蠢的问题,但我会假设在完全相同的 IPython 笔记本服务器中的完全相同节点上运行的终端模拟器和笔记本将具有完全相同的环境变量。
任何有关为什么终端和笔记本中的环境变量可能不同的见解将不胜感激。
更新: 如果重要,我正在使用的服务器使用 Univa Grid Engine。我还注意到,使用 qrsh
还是 qsub
来启动笔记本服务器似乎有所不同。
以前我一直在使用 qsub
,但是通过使用 qrsh
启动笔记本服务器,我消除了 env
和 os.environ
之间的许多差异。仍然存在差异,但要少得多。仍然不确定这意味着什么:)
最佳答案
根据 qsub、qsh、qrsh 的手册页,要将当前 shell 环境传播到作业,请使用 -V
选项:
-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))
关于python - 为什么 ipython env 变量与相关终端模拟器中的 bash env 变量不匹配?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31956428/