【发布时间】:2016-09-05 21:09:18
【问题描述】:
我创建了一个 R 脚本,我需要从 Python 调用 R 脚本。 R 脚本需要一些包才能运行,但是每当我运行我的 python 代码时,我都会收到以下错误:
CalledProcessError: Command '['C:/Program Files/R/R-3.2.3/bin/x64/Rscript.exe', 'D:/Abhi/desktop/testing/SCRIPTS/JMOTIF/data-04-13/NewClassificationMethod.R', '51', '9', '20', '20', 'D://Abhi//desktop//testing//SCRIPTS//JMOTIF//data-04-13//PureAgri.csv', 'D://Abhi//desktop//testing//SCRIPTS//JMOTIF//data-04-13//PureForest.csv']' returned non-zero exit status 1。
如果我注释掉库调用,则不会出现错误并且脚本可以正常工作。
作为一个小例子,以下代码将不起作用:
pythonArgs = commandArgs(trailingOnly = TRUE)
library(plyr)
wSize= as.numeric(pythonArgs[1]) #as.numeric(pythonArgs[1])#Window Size
paaSize=as.numeric(pythonArgs[2])#Pax approximation size
cat(wSize, paaSize)
此代码将起作用
pythonArgs = commandArgs(trailingOnly = TRUE)
#library(plyr)
wSize= as.numeric(pythonArgs[1]) #as.numeric(pythonArgs[1])#Window Size
paaSize=as.numeric(pythonArgs[2])#Pax approximation size
cat(wSize, paaSize)
以下是我目前从 Python 调用它的方式:
cmd = [command, path2Script] + args
x = subprocess.check_output(cmd,universal_newlines = True)
【问题讨论】:
-
只是出于好奇,如果您使用
require(plyr)而不是库会发生什么? -
由于没有错误消息只生成 False 值,因此脚本将一直运行,直到我需要使用库,当我检查 require(plyr) 的值时,它说它返回了 FALSE 值。
-
所有软件包都会出现这种情况吗?你能用
tryCatch检查错误的性质吗? -
是的,我尝试加载的任何包(三个包)都会发生这种情况。我不熟悉 tryCatch 函数,除了我在问题中发布的错误之外,它会提供任何详细信息吗?
-
从 R 控制台读取
?Startup,然后设置缺少的相应系统环境变量。您的 R 进程未找到正确的库位置。如果您想查看当前“查找”的位置,请在您的脚本中包含print(.libPaths())并从 R 控制台会话中执行此操作。我预测它们会有所不同。
标签: python r subprocess environment-variables packages