我的默認的Python 2.7,但我有需要Python 3.4的腳本。我想R中創建一個函數,將:
- 切換到Python 3.4
- 運行此腳本
- 切換回Python 2.7版
- 導入結果爲R
要在Python版本之間切換,我使用我的羣集的「dotkit」系統,如下所示:
use Python-2.7
use Python-3.4
「use」是一個在我的.bashrc文件中導入的bash函數。它設置了我所有的路徑變量(PATH,LIBRARY_PATH,LD_LIBRARY_PATH,CPATH,C_INCLUDE_PATH等)。問題是,當我嘗試調用R中這個功能,我得到以下錯誤:
system('use Python-3.4')
sh: use: command not found
看起來這是我路上的問題。我正在使用正確的外殼:
system('echo $SHELL')
/bin/bash
我的$ PATH變量也看起來不錯。然而,當我創建一個腳本,基本上做同樣的事情:
load_py34.sh:
#!/bin/bash
source ~/.bashrc
use Python-3.4
和過R調用這個腳本,那麼它實際運行,但由於某些原因,它不在R改變我的Python版本(我已經驗證了這個腳本的命令行工作。)
> R
> system('python --version')
Python 2.7.1
> system('sh load_py34.sh')
Prepending: R-3.4 (ok)
> system('python --version')
Python 2.7.1
所以我有點困惑,但如果有人能幫助,我將不勝感激。
建議的修復
當我將它們合併成一個單一的命令,我仍然有同樣的問題:
> system("sh load_py34.sh; python --version")
Prepending: Python-3.4 (already loaded)
Python 2.7.1
當我嘗試直接調用bash中,我仍然有一個問題與路徑:
> system("bash -c 'use Python-3.4; python --version'")
bash: use: command not found
Python 2.7.1
當我在一次調用中組合它們時,我得到同樣的錯誤。我會更新這個問題來反映這一點。 –