计算集群中的Python库
我在一个计算机集群上运行Python时,遇到了一个问题,就是找不到已安装的库。
比如说,当我在脚本中尝试加载numpy时:
#file: /home/foo/test.py
import numpy
print numpy.__version__
在服务器上,我得到了这个结果:
foo@abax:~$ python test.py
1.4.1
但是当我在一个远程节点上运行相同的代码时,我却遇到了错误:
foo@abax:~$ rsh -l foo ab01 "python test.py"
Traceback (most recent call last):
File "test.py", line 2, in <module>
import numpy
ImportError: No module named numpy
有没有办法让Python加载集群中央节点上已安装的文件呢?
1 个回答
1
首先要检查的内容:
- 在前端服务器和集群节点上都打印出
PYTHONPATH
,确保它们没有不一致的地方。 - 在前端服务器上打印
numpy.__file__
,看看它是从哪里找到 numpy 的。然后稍微浏览一下集群节点的文件系统,看看能否在同样的位置找到 numpy(如果找不到,可以搜索一下,找到后再相应地更新你的PYTHONPATH
)。
可能的情况是,numpy 只在前端服务器上安装了,但在集群节点上没有。在这种情况下,你需要自己在集群节点可以访问的文件系统上安装 numpy(注意,在科学计算集群上,最好是请集群管理员在集群节点上安装 numpy,这样大家都能用)。
如果平台相似,可以尝试把前端服务器上的 numpy 文件夹复制到共享文件系统中的某个地方(比如你家目录下的一个子文件夹,然后把这个文件夹添加到你的 PYTHONPATH
中),这样可能会有效,但最好还是进行干净的安装。