Python - 使用子进程来管道R脚本,生成Winerror 2

时间:2016-06-25 03:33:16

标签: python r python-2.7 python-3.x subprocess

我正在尝试使用subprocess通过Python运行R脚本,但不幸的是,我不断收到以下错误:

WindowsError: [Error 2] The system cannot find the file specified

这是非常令人沮丧的,因为我已经多次检查了所有路径(没有C:/完成它,移动到不同的目录,更改了我试图运行的R脚本等)。我还检查了CompSec环境变量,它也是正确的(通过Windows系统,虽然我从未在我的IDE中直接检查它,Spyder)。我已经尝试在Python 2.7和Python 3.5中使用它,并且两个版本都不起作用。

代码如下:

import subprocess

def sort_ByInputColumn(inputPath, inputFileTermination, sortColumn, outputPath, outputFileTermination):
scriptPath = "C:/Users/Kyle/Documents/Rscript_SortByInputColumn.R"
subprocess.call(["Rscript",  scriptPath, inputPath, inputFileTermination, sortColumn, outputPath, outputFileTermination])

fileName = 'Alabama'
outputPath = "C:/Users/Kyle/Documents/HillData/Data/Output/Module2/"
sortColumn = str(16)
inputTermination = fileName + 'Module2NN_WorkCounty_Work.csv'
outputFileTermination = fileName + 'Module2NN_SortedWorkCounty.csv'
sort_ByInputColumn(outputPath, inputTermination, sortColumn, outputPath, outputFileTermination)

无论我尝试运行什么代码(甚至公然复制粘贴this tutorial以尝试使其工作),我都会收到此错误这一事实让我感觉更深层次(或非常明显的东西)正在发生我没有看到。

欢迎任何有关此事的反馈。

1 个答案:

答案 0 :(得分:2)

为了解决这个最烦人和最可怕的问题,我将R重新安装到一个没有空格的目录中,并将Rscript称为"C:/R/R-3.3.1/bin/Rscript.exe"及其完整路径(C:/Program Files/R/R-3.3.1/bin/Rscript.exe"来自Program Files,因为{{1}有一个空格,这会杀死subprocess,因为它是基于命令行的,我猜)。这次,它奏效了。

请参阅this similar question,了解我获得灵感的地方。