【Linux+Python】叢集、ssh、python、import error
阿新 • • 發佈:2018-12-14
當你集齊這幾個關鍵詞時,你和我遇到了一樣的問題。
linux裝了ssh的叢集中,如果單獨在某個節點執行python檔案,正常。但是一旦用這個命令
for k in $(seq 1 10)
do
ssh [email protected]${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 [email protected]${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版本