You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用R脚本遇FileNotFoundError及subprocess.Popen无响应问题求助

Python调用R脚本的问题解决

我尝试用Python的subprocess模块运行R脚本,遇到了几个问题,以下是我的尝试、对应报错及可行的解决思路:

我的尝试及问题

代码1 & 代码2

使用subprocess.call和subprocess.Popen的列表参数形式调用:

subprocess.call(['Rscript', '--vanilla', 'C:/Users/siddh/Downloads/R_script_BCA.R'])
subprocess.Popen(['Rscript', '--vanilla', 'C:/Users/siddh/Downloads/R_script_BCA.R'])

两段代码均抛出相同错误:

FileNotFoundError: [WinError 2] The system cannot find the file specified

代码3

改用shell=True的字符串参数形式:

subprocess.Popen('Rscript --vanilla C:/Users/siddh/Downloads/R_script_BCA.R', shell=True)

运行后仅返回进程对象,脚本并未实际执行完成:

<Popen: returncode: None args: 'Rscript --vanilla C:/Users/siddh/Downloads/R...'>

但直接在命令提示符或PowerShell中执行以下命令可以正常运行脚本:

Rscript --vanilla "C:/Users/siddh/Downloads/R_script_BCA.R"

解决思路

1. 指定Rscript的完整路径

报错的核心原因是subprocess找不到Rscript.exe的位置——虽然命令行能直接调用,但Python进程可能未加载到对应的系统环境变量。

找到本地R安装目录下的Rscript.exe(比如默认路径为C:/Program Files/R/R-4.3.1/bin/Rscript.exe,版本号根据实际安装情况调整),将代码改为指定完整路径:

subprocess.call(['C:/Program Files/R/R-4.3.1/bin/Rscript.exe', '--vanilla', 'C:/Users/siddh/Downloads/R_script_BCA.R'])

2. 完善shell=True模式的执行逻辑

用Popen启动进程后,需要调用wait()方法等待脚本执行完毕;或者直接使用subprocess.call,它会自动等待子进程结束:

# 方法一:Popen + wait()
proc = subprocess.Popen('Rscript --vanilla "C:/Users/siddh/Downloads/R_script_BCA.R"', shell=True)
proc.wait()

# 方法二:直接用subprocess.call
subprocess.call('Rscript --vanilla "C:/Users/siddh/Downloads/R_script_BCA.R"', shell=True)

3. 确保R的bin目录在系统PATH中

检查系统环境变量PATH是否包含R安装目录下的bin文件夹(比如C:/Program Files/R/R-4.3.1/bin),如果没有就添加进去,然后重启Python IDE或终端,让环境变量生效。之后subprocess就能直接识别Rscript命令,无需指定完整路径。

内容的提问来源于stack exchange,提问作者Siddham Jasoria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:20:34