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

使用Python subprocess调用R脚本时出现WinError 193错误求助

解决Python调用R脚本时的WinError 193问题

我之前也碰到过这个一模一样的错误,折腾了好一会儿才搞清楚根源,给你梳理下问题所在和可行的解决办法:

为什么会出现WinError 193?

这个错误本质上是系统找不到你要调用的可执行文件,或者调用的不是合法的Win32应用程序,具体到你的情况,主要有这几个原因:

  • 漏掉了Rscript的.exe后缀:在Windows系统里,Rscript实际是Rscript.exe,如果没加后缀,系统可能识别不到这个可执行文件,尤其是你没把R的bin目录加到系统环境变量里的时候。
  • 路径里的空格没处理好:你的R安装路径包含Program Files这个带空格的目录,直接用列表形式传参数给subprocess.call时,空格可能导致系统解析路径出错。
  • 相对路径的工作目录坑:./testing.r是相对当前工作目录的路径,但Python脚本运行时的工作目录不一定是脚本所在的目录,这会导致找不到你的R脚本。
  • 用错了路径格式:你后来试的/usr/bin/Rscript是Linux/macOS下的路径,在Windows系统里完全不适用,肯定会报错。

具体的解决办法

1. 使用完整的带.exe的Rscript路径

首先要确认Rscript.exe的实际位置,它一般在R安装目录的bin文件夹下,不是根目录。把路径改成这样:

import subprocess
import sys

if condition:
    # 注意加上bin目录和.exe后缀
    subprocess.call(["C:/Program Files/R/R-3.4.3/bin/Rscript.exe", "testing.r"])
    sys.exit()

也可以用原始字符串避免转义问题:

subprocess.call([r"C:\Program Files\R\R-3.4.3\bin\Rscript.exe", "testing.r"])

2. 确保能找到同目录的R脚本

为了避免相对路径的问题,最好用Python脚本所在的绝对路径来拼接R脚本的路径:

import os
import subprocess
import sys

# 获取当前Python脚本所在的目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接R脚本的绝对路径
r_script_path = os.path.join(script_dir, "testing.r")

if condition:
    subprocess.call([r"C:\Program Files\R\R-3.4.3\bin\Rscript.exe", r_script_path])
    sys.exit()

这样不管你从哪个目录运行Python脚本,都能准确找到同目录下的testing.r。

3. 把R的bin目录加到系统环境变量(可选)

如果你不想每次都写完整路径,可以把R安装目录下的bin文件夹(比如C:\Program Files\R\R-3.4.3\bin)加到系统的PATH环境变量里,之后直接用"Rscript.exe"就能调用:

subprocess.call(["Rscript.exe", r_script_path])

4. 尝试使用shell=True(谨慎使用)

如果上面的方法都不行,可以试试加上shell=True参数,让系统shell来解析命令,但注意这个方法有安全风险(如果路径来自不可信输入的话):

subprocess.call('"C:/Program Files/R/R-3.4.3/bin/Rscript.exe" ./testing.r', shell=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:20:33