2016-06-29 40 views
0

我試圖在R中調用一個系統命令來調用對python腳本(包括導入到pandas)的調用,如下所示:系統commant將無法在shell中調用Ubuntu上的Python命令時使用R

getwd() 
[1] "/home/production" 
> system("python In_tag_main_model/python_scripts/connect_to_couchbase.py") 
Traceback (most recent call last): 
    File "In_tag_main_model/python_scripts/connect_to_couchbase.py", line 11, in <module> 
    import pandas as pd 
ImportError: No module named pandas 

connect_to_couchbase.py我打電話大熊貓,這是不被認可,雖然當我從我的機器這個確切的命令shell:

[email protected]:~$ python In_tag_main_model/python_scripts/connect_to_couchbase.py 
[email protected]:~$ 

它的偉大工程,任何集成開發環境爲什麼system ISN不爲我工作?

在此先感謝!

+0

您是否完全確定在您通過R調用時使用的'python'與您在終端中使用的'python'相同?請注意,'PATH'變量可能不同。嘗試從R運行命令'哪個python' – Bakuriu

+0

它不是!我怎樣才能將系統從'/ usr/bin/python'設置爲'/ anaconda2/bin/python'? –

+1

最簡單的方法是使用完整的路徑,所以'/ anaconda2/bin/python In_tag_main_model/...'。我不是R用戶,但是['system'](https://stat.ethz.ch/R-manual/R-devel/library/base/html/system.html)函數的頁面表示更新程序應該使用['system2'](https://stat.ethz.ch/R-manual/R-devel/library/base/html/system2.html),我可以看到第二個函數有'env'參數,您可以在其中設置PATH,以便/ anaconda2/bin目錄搜索可執行文件。 – Bakuriu

回答

1

它看起來像R system函數正在執行一個不同的python可執行文件。您有三個選項來指定你想要的可執行文件:

  • 您的絕對路徑:

    system("/anaconda2/bin/python In_tag_main_model/python_scripts/connect_to_couchbase.py") 
    
  • 通過Sys.setenv設置PATH變量的過程(如您已完成):

    Sys.setenv(PATH="/anaconda2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bi‌​n:/sbin:/bin:/usr/games") 
    system("python In_tag_main_model/python_scripts/connect_to_couchbase.py") 
    
  • 使用較新的system2函數,該函數提供env參數,該參數可以b Ë用於修改環境變量的子:

    system2("python", 
         args="In_tag_main_model/python_scripts/connect_to_couchbase.py", 
         env="PATH=/anaconda2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bi‌​n:/sbin:/bin:/usr/games") 
    

    注意system2system不同的調用約定。

+0

謝謝!節省了我噸的時間:) –