2011-07-27 67 views
2

我在服務器上使用python。當我運行它需要numpy的模塊,如果我做使用ssh時python找不到模塊

​​

該服務器會抱怨找不到模塊名爲numpy的一個python命令。

但是,如果我第一個SSH到該服務器通過

ssh <server name> 

則該服務器上運行該命令蟒

<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 
+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 

找到所有的pathes蟒蛇搜索模塊

我們應該做的

ssh <server name> 'echo $PYTHONPATH' 

我們不能忽略報價來檢查服務器上的變量PYTHONPATH

0

當運行cmd o ver ssh在一行中,.profile不被讀取。 要進行測試,試試這個:

ssh host env 

用此代替來解決這個問題(引號是強制性的):

ssh host '. ~/.profile; cmd' 

如:

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