2011-07-27 16 views
2

私はサーバーでpythonを使用しています。私は、サーバーが見つかりませモジュールという名前のnumpyのを文句を言わないだろう sshを使用しているときにpythonがモジュールを見つけることができません

​​をすれば、numpyのモジュールを必要とするPythonコマンドを実行すると。

しかし、私

ssh <server name> 

により、そのサーバーへの最初のssh場合、すべてがOKになります

<python command> 

そのサーバー上のことのpythonのコマンドを実行します。

これは、サーバーがすでに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 
+1

。。。何? –

答えて

1

それらのコマンドを実行します。また、ユーザの.bashrcには、追加のモジュールにアクセスできるように、$PATHを変更する固有のものがあります。グローバルレベルでのパスの変更は個人的には好きではありませんので、私はPythonのアプローチを提案します:sys.path.append('/path/to/numpy')

+0

ご返信ありがとうございます。私が追加した内容を見てください。それはまだパスの問題かもしれません。ありがとう – user866282

0

同じPython環境を使用していることを確認してください。ログイン時に/ usr/bin/pythonのようなものを使用しているかもしれませんし、リモートで実行しようとしているときに/ usr/local/bin/pythonのような別のインストールを使用しているかもしれません。

+0

あなたの返事をありがとう。私が追加した内容を見てください。私がログインしてリモートで実行するときのPython環境は同じだと思います。 – user866282

0

問題が見つかりました。これは本当にpythonパスの問題です。

そして、私はこれを見つけられませんでした理由は、代わりに

ssh <server name> echo $PYTHONPATH 

を行うので、我々は

ssh <server name> 'echo $PYTHONPATH' 

を行う必要があります

すべてpathesパイソン検索モジュールを見つけるために、ということである我々サーバー上の変数PYTHONPATHを確認するために引用符を無視することはできません

0

cmd oバージョンsshを1行に記述すると、.profileは読み込まれません。テストする 、これを試してみてください。

ssh host env 

使用この代わりに、この問題(引用符は強制されている)を固定するために:

ssh host '. ~/.profile; cmd' 

例:

ssh <server name> '. ~/.bashrc; <python command>' 
関連する問題