通过计算集群加载python模块

Jac*_*ain 5 python linux distributed-computing

我有一个使用Scientific Linux的计算集群的帐户。当然,我只有用户访问权限。我正在使用python,我需要运行python脚本,因此我需要导入一些python模块。由于我没有超级用户访问权限,因此在$ HOME上安装了带有所有必需模块的本地python副本。当我在帐户(托管节点)上运行脚本时,它们可以正常运行。但是为了将作业提交到计算队列(以便在速度更快的计算机上进行处理),我需要提交一个bash脚本,该脚本的一行执行脚本。计算群集使用SunGrid Engine。但是,当我提交bash脚本时,出现一个错误,即找不到我安装的模块!我不知道怎么了。希望您能帮忙。

EEA*_*EAA 0

首先,该解决方案是否适合您在很大程度上取决于集群的设置方式。也就是说,您的问题的一般解决方案如下。如果计算集群可以访问与主目录中相同的文件,我认为这没有理由不起作用。


您需要使用virtualenv。在该 virtualenv 中安装您的软件以及您需要的任何其他 python 软件包。然后在批处理 bash 脚本中,提供该 virtualenv 中python 解释器的完整路径。

注意:要在 virtualenv 中安装 python 包,您需要使用 virtualenv 中的 pip 实例,而不是系统 pip。

例子:

$ virtualenv foo
$ cd foo
$ ./bin/pip install numpy
Run Code Online (Sandbox Code Playgroud)

然后在你的 bash 脚本中:

/path/to/foo/bin/python /path/to/your/script.py
Run Code Online (Sandbox Code Playgroud)