在调用R脚本时遇到python子过程中的错误

问题描述 投票:1回答:1

[下面是使用python中的子进程执行R脚本的代码,后面有flaskcelery工作程序。

#r_script is the R file
cmd = ['Rscript', r_script, input_file, json.dumps(parameters), output_file, r_script_dir]
self.__logger.info("Executing R script")
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
process_result = process.communicate()

我在第process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)行中遇到错误

错误:init中的文件“ /usr/lib/python2.7/subprocess.py”,第679行errread,errwrite)_execute_child中的文件“ /usr/lib/python2.7/subprocess.py”,第1249行提高child_exception-OSError:[Errno 2]没有这样的文件或目录

python r subprocess
1个回答
0
投票

这可能是由于两个问题,一个是,您必须添加shell=True才能在subprocess中执行shell命令。

process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,shell=True)

此外,这也可能是由于Shell无法找到执行它的Rscript命令而导致的。如果您不设置机器中Rscript的路径,通常会出现这种情况。您可以通过在终端/重击中键入Rscript来测试它,如果它说找不到命令,则必须在路径中指定它才能检测到它。

下面是一个示例:

export PATH=$PATH:/root/R/bin

export PATH=$PATH:/root/R-3.4.1/bin # specific R version
© www.soinside.com 2019 - 2024. All rights reserved.