繁体   English   中英

Python 中 subprocess.call() 的 FileNotFoundError

[英]FileNotFoundError on subprocess.call() in Python

我正在尝试使用 Python 运行 R 脚本。我使用 subprocess.call function 来实现此目的。 正如其他帖子中所建议的,我尝试了这些不同的代码:

代码1

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

代码 2

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

两者都出错

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

代码 3

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

运行代码 3 只显示以下内容,没有任何反应

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

以下代码在命令提示符/PowerShell 中使用时运行良好

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

如果在PATH环境变量中找不到 Rscript,就会发生这种情况。 将完整路径放入 Rscript,类似于:

subprocess.call([
    r'C:\Program Files\R\R-4.2.1\bin\Rscript',    # put here the path to your Rscript
    '--vanilla', 
    'C:/Users/siddh/Downloads/R_script_BCA.R'
])

或者在运行subprocess.call之前添加路径:

import os
os.environ['PATH'] += ';' + r'C:\Program Files\R\R-4.2.1\bin'   # replace with your real path to Rscript

查看运行 python 的PATH中是否有 Rscript 的路径:

import os
for p in os.environ['PATH'].split(';'):
    print(p)

要在 PowerShell 中找到您的 Rscript 的路径:

Get-Command Rscript | Select-Object Source

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM