【Linux+Python】叢集、ssh、python、import error

CS青雀發表於2018-12-13

 

當你集齊這幾個關鍵詞時,你和我遇到了一樣的問題。

linux裝了ssh的叢集中,如果單獨在某個節點執行python檔案,正常。但是一旦用這個命令


    for k in $(seq 1 10)
    do
        ssh guest@node${k} "python hello.py"
    done

批量執行時,發現反覆報錯:mpi import error,psutil import error等。

直接說原因:系統預設的python版本跟你用的不一樣。

測試如下

(1)隨便選個節點node 1,執行“which python”,“python -V”,均顯示為python3

(2)執行如下命令時,均顯示為python2。

    for k in $(seq 1 10)
    do
        ssh guest@node${k} "which python && python -V"
    done

解釋:上述程式碼的意思是,檢視叢集中每個節點的python版本。

居然出現兩個預設版本,醉了。

解決:批量修改預設python版本為python3.

step 1: 進入root

step 2:建立一個test.sh檔案,寫上如下命令

for k in $(seq 1 10)
do
	ssh node${k} "cd /usr/bin && rm -rf python && ln -s /home/anaconda3/bin/python  /usr/bin/python"
done

注意我安裝的是anaconda3中的python3,所以路徑是在anaconda3下。改成你自己的路徑。

step 3:執行這個指令碼,修改所有機器的預設路徑:sh test.sh

問題解決。

 

=============================================

註釋:

ll /usr/bin/python   檢視預設python版本的路徑

cd /usr/bin && rm -rf python  刪除該預設路徑的link

which python:當前所用的python的安裝路徑

python -V:當前所用的python版本

 

 

 

相關文章