2012-11-30 25 views
2

我嘗試通過python GUI運行R腳本。在Windows 7下從python啓動時找不到R包

在R控制檯下,我安裝了rgl軟件包。在Windows 7中,R在當前用戶文件夾下安裝軟件包,而不是ProgramFiles \ R ...文件夾。

我有一個簡單的腳本demo.r

library('rgl') 
example('plot3d') 

如果我使用新安裝的RGL包下面的命令行運行demo.r腳本:

"c:\ProgramFiles\R\R..\bin\Rscript.exe" demo.r 

它完美!

現在,如果我從蟒蛇與下面的腳本運行:

import subprocess 
out = subprocess.check_output([r"c:\ProgramFiles\R\R..\bin\Rscript.exe", "demo.r"]) 

我得到告知RGL錯誤沒有被發現/安裝。

我檢查瞭如果我的demo.r只包含一個簡單的打印屏幕命令,它的工作原理。這意味着從python啓動時,Rscript.exe不知道在哪裏可以找到用戶文件夾下的rgl包。

如果我將rgl包文件夾從用戶文件夾複製到ProgramFiles \ R ...文件夾,那麼它工作。

有沒有人知道我可以如何指定讓Python運行R腳本並使用用戶文件夾中的包?

感謝

+0

你解決了這個問題嗎? – Balz

回答

0

這是更好地創建一個lanucher.bat,我suupose

R_PATH:C:/ Program Files文件/ R/R版本

DEMO_PATH:您的演示.r路徑

@echo off 
C: 
PATH R_PATH;%path% 
cd DEMO_PATH 
Rscript demo.R 
exit 

您將launcher.bat保存在LAUNCHER_PATH

現在蟒蛇:

import subprocess 
out = subprocess.check_output('LAUNCHER_PATH\launcher.bat') 

PS:如果你添加一些參數傳遞給你的Python腳本很容易將它們添加到您的launcher.bat,在不改變Python代碼

Rscript demo.R arg1 arg2 
+0

即使通過bat文件,我也遇到同樣的問題。從python啓動時找不到rgl庫 – user1520280

+0

是的,它只有在我從python執行時才能找到。 – user1520280

+0

我使用Python 2.7.3和R 2.15.2。 – user1520280

0

您需要在子流程中設置一個R_USER環境變量,R在設置.Library.site時需要考慮的環境變量:

import subprocess, os 
my_env = os.environ.copy() 
my_env["R_USER"] = my_env["HOMEPATH"] 
subprocess.check_output([r"c:\ProgramFiles\R\R..\bin\Rscript.exe", "demo.r"], env=my_env) 
import subprocess, os 
my_env = os.environ.copy() 
my_env["R_USER"] = my_env["HOMEPATH"] 
subprocess.check_output([r"c:\ProgramFiles\R\R..\bin\Rscript.exe", "demo.r"], env=my_env) 

請注意,my_env["HOMEPATH"]適合我,因爲那是我的\R\win-library\目錄所在的地方。您可能必須沿着os.path.join(my_env["HOMEPATH"],"documents")的行使用某些內容,具體取決於您的用戶庫生活位置(請參閱R中的?library瞭解詳細信息)。在任何語言的子流程(Powershell,Node等)中啓動R時都適用相同的邏輯。)