为什么ipython env变量不匹配关联的终端模拟器中的bash env?
最近我一直在用
Python做一些互动工作.
我的设置是在服务器上运行的IPython笔记本,该服务器使用网格引擎来管理作业. 今天我试图让一个IPython集群继续发布一个使用subprocess.Popen来启动集群的示例here. 我无法让这个例子工作所以我尝试打开IPython / Jupyter终端模拟器并输入ipcluster start命令,集群就开始了! 在玩了一段时间之后,我意识到如果我在终端模拟器中键入env,我得到的环境变量列表与我在Python中查看os.environ变量时的列表不同.问题的根源似乎是PATH变量不同. 现在我知道我可以在os.environ中更改PATH变量,但我想知道为什么它首先是不同的?我对环境变量知之甚少,所以这可能是一个愚蠢的问题,但我会假设在完全相同的IPython笔记本服务器上的完全相同的节点上运行的终端模拟器和笔记本将具有完全相同的环境变量. 任何关于为什么终端和笔记本中的环境变量可能不同的见解将非常感激. 更新:如果重要,我正在使用的服务器使用Univa Grid Engine.另外我注意到,无论是使用qrsh还是qsub启动笔记本服务器,似乎都有所不同. 以前我一直在使用qsub,但是通过使用qrsh启动笔记本服务器,我消除了env和os.environ之间的许多差异.仍有差异,但更少.仍不确定这是什么意思:) 解决方法
根据qsub,qsh,qrsh的手册页,要将当前shell环境传播到作业,请使用-V选项:
-V Available for qsub,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)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |