在集群上使用Python,Cython和GSL

时间:2015-06-11 04:08:12

标签: python linux cython gsl

我希望在集群计算系统上运行我的Python程序。由于我在群集的每个节点上都没有root访问权限,因此我需要在本地目录中安装Python和我的模块,然后从那里运行我的代码。为了节省时间,我能够在其中一个节点上进行本地Python构建,tar,并将tarred Python保存在代理服务器上。然后,当我想在其余节点上运行我的代码时,我只需要使用tarred Python,解压缩它,然后运行我的程序。所以基本上我只需要构建一次Python,然后可以在集群上重复使用它;我在集群上运行的代码如下所示:

#!/bin/bash
wget www.proxyserver.Local_Python_Build.tgz
tar xzf Local_Python_Build.tgz
./Local_Python_Build/bin/python my_python_code.py

我遇到了一个主要问题。首先,我的主要代码使用了我编写的一些需要GSL的Cython程序。当我进行Python的初始安装时,我还会进行GSL的本地构建,以及编译Cython代码(所有这些代码都包含在tar中)。我已经检查过以确保在构建之后一切都正常运行,但是一旦我在群集上提交代码,代码就无法运行。我一直收到以下错误:

ImportError: libgsl.so.0: cannot open shared object file: No such file or directory

现在,我已经尝试将路径添加到libgsl.so.0所在的目录中LD_LIBRARY_PATH,但这不起作用;即

export LD_LIBRARY_PATH=path/where/libgsl/is

我担心每次运行代码时都需要构建GSL;即运行以下代码:

#!/bin/bash
wget www.proxyserver.Local_Python_Build.tgz
tar xzf Local_Python_Build.tgz
install GSL
Compile Cython Code
./Local_Python_Build/bin/python my_python_code.py

这显然会增加我的运行时间,这是我希望避免的。任何想法?计算集群运行Linux。

谢谢!

1 个答案:

答案 0 :(得分:2)

在每次运行时构建GSL(或者就此而言都是Python)绝对不是必需的。假设,所有节点都可以访问某些共享文件系统,您可以简单地

  1. 构建Python,GSL并在共享文件夹中编译您的Cython代码
  2. 在您提交给批处理队列系统的文件中,您更改了环境变量(LD_LIBRARY_PATHPATH等),以便它可以找到可执行文件和必要的库。
  3. 可能失败的原因是path/where/libgsl/is未安装在节点上。请与系统管理员核实该问题。所使用的批处理系统的细节也将影响如何使其工作。