2014-03-25 22 views
1

我有一个使用Scientific Linux的计算集群的帐户。当然,我只有用户访问权限。我正在使用python,我需要运行python脚本,所以我需要导入一些python模块。由于我没有root访问权限,我在我的$ HOME上安装了一个本地python副本以及所有必需的模块。当我在我的帐户(托管节点)上运行脚本时,它们运行正常。但为了将作业提交到计算队列(在更快的机器上处理),我需要提交一个包含执行脚本的行的bash脚本。计算群集使用SunGrid引擎。但是,当我提交bash脚本时,出现错误,我找不到安装的模块!通过计算集群加载python模块

所以我对这个问题的理解是,模块没有被发送或执行脚本的机器。我的问题是:是否可以在脚本中包含所有模块?

编辑:我刚刚创建了一个运行which python的bash脚本,我注意到输出不是我的python副本。但是当我在我的ssh帐户上运行'哪个python'时,我正确地获得了我的python副本。

回答

0

提交的脚本很可能使用系统Python安装,而不是您自己的。尝试使用一个命令which python来提交shell脚本来确认。

修正是将Python解释器的路径预先添加到系统路径中。在我的机器上,正确的Python安装在/Users/mbatchkarov/anaconda/bin/python。我添加了export PATH="/Users/mbatchkarov/anaconda/bin:$PATH"~/.bash_profile

编辑添加同一行到~/.bashrc

+0

请参阅我的编辑。在我的SSH帐户中,所有设置都正确,但是当我发送作业运行时,它使用其他一些python。 –

+0

看我的编辑。如果它在ssh进入计算节点时起作用,那么SGE必须产生非登录shell。你可以在http://superuser.com/questions/183870/difference-between-bashrc-and-bash-profile阅读关于登录和非登录shell的区别 – mbatchkarov