2014-03-25 52 views
3

我有一個使用Scientific Linux的計算羣集的帳戶。當然,我只有用戶訪問權限。我正在使用python,我需要運行python腳本,所以我需要導入一些python模塊。由於我沒有root訪問權限,我在我的$ HOME上安裝了一個本地python副本以及所有必需的模塊。當我在我的帳戶(託管節點)上運行腳本時,它們運行正常。但爲了將作業提交到計算隊列(在更快的機器上處理),我需要提交一個包含執行腳本的行的bash腳本。計算羣集使用SunGrid引擎。但是,當我提交bash腳本時,出現錯誤,我找不到安裝的模塊!我無法弄清楚什麼是錯的。我希望你能幫忙。通過計算羣集加載python模塊

+1

順便說一句 - 這是一個軟件開發問題,而不是系統管理問題。因此,我已投票將此遷移到StackOverflow。另外,如果您對如何在集羣上運行事情有疑問,那麼詢問運行集羣的人員似乎是合適的。 – EEAA

回答

0

首先,該解決方案是否適用於您取決於羣集的設置方式。這就是說,你的問題的一般解決方案如下。如果計算集羣可以像訪問主目錄一樣訪問相同的文件,我沒有看到爲什麼這種方式無效。


您需要使用virtualenv。在你的virtualenv中安裝你的軟件以及你需要的任何額外的python軟件包。然後在批量bash腳本中,提供該virtualenv內的python解釋器的完整路徑。

注意:要在virtualenv中安裝python軟件包,您需要使用virtualenv中的pip實例,而不是系統pip。

例子:

$ virtualenv foo 
$ cd foo 
$ ./bin/pip install numpy 
在bash腳本

然後:

/path/to/foo/bin/python /path/to/your/script.py 
+0

我剛剛創建了一個運行'哪個python'的bash腳本,我注意到輸出不是我的python副本。但是當我在我的ssh帳戶上運行「哪個python」時,我得到了我的副本。 –

+0

嘗試執行我建議的操作 - 您將提供您自己的python副本以供羣集運行。嚴肅地說,就是和運行集羣的人交談。我可以清楚地不知道他們是如何設置的,顯然你也不知道。與他們交談將成爲您解決問題的最快途徑。 – EEAA

1

你可以簡單地從bash腳本的東西,如打電話給你的Python程序:PYTHONPATH=$HOME/lib/python /path/to/my/python my_python_script

我不瞭解SunGrid的工作原理,但如果它使用的用戶不是您的用戶,則需要對您的$HOME進行全局讀取。或者至少到Python庫。