我在服务器上使用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
答案 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