使用ssh时python无法找到模块

时间:2011-07-27 21:00:19

标签: python ssh

我在服务器上使用python。当我运行需要numpy模块的python命令时,如果我这样做

ssh <server name> <python command>
  

该服务器会抱怨找不到名为numpy的模块。

但是,如果我首先通过

ssh到该服务器
ssh <server name>

然后在该服务器上运行该python命令

<python command>

一切都会好的。

这意味着服务器已经安装了numpy模块,如果没有登录就无法找到该模块。

猜测问题可能是什么?

由于

  

添加:

     

很遗憾忘记提及,我通过运行得到的结果

ssh <server name> which python
ssh <server name> echo $PYTHONPATH
ssh <server name> echo $PYTHONUSERBASE
ssh <server name> echo $LD_LIBRARY_PATH
  

与我第一次ssh到服务器时的情况相同

ssh <server name>
  

然后运行这些命令

which python
echo $PYTHONPATH 
echo $PYTHONUSERBASE
echo $LD_LIBRARY_PATH

5 个答案:

答案 0 :(得分:1)

是。这也意味着您的用户的.bashrc具有特定的内容,可以修改$PATH以允许您访问额外的模块。我个人不喜欢在全球范围内修改路径,所以我建议使用Python方法:调用sys.path.append('/path/to/numpy')

答案 1 :(得分:1)

我发现了问题。这确实是python路径的问题。

我没有找到这个的原因是,而不是做

ssh <server name> echo $PYTHONPATH

找到所有的pathes python搜索模块

我们应该做

ssh <server name> 'echo $PYTHONPATH'

我们不能忽略检查服务器上的变量PYTHONPATH的引用

答案 2 :(得分:1)

在一行中通过ssh运行cmd时,不会读取.profile。 要测试,试试这个:

ssh host env

使用此代替来修复此问题(引号是强制性的):

ssh host '. ~/.profile; cmd'

例如:

ssh <server name> '. ~/.bashrc; <python command>'

答案 3 :(得分:0)

检查并确保您使用的是相同的python环境。当您尝试远程运行时,您可能正在使用/ usr / bin / python之类的文件,并且在尝试远程运行时可能使用不同的安装,例如/ usr / local / bin / python。

答案 4 :(得分:0)

遇到相同的问题,并尝试了上述所有操作。

对我有用的是将远程命令从python更改为完整路径。

1)SSH到您的遥控器上,通过

找出python所在的位置

2)将命令从python pyscript.py更改为remote/path/to/python pyscript