Python подпроцесс завершается неудачно, хотя он работает в командной строке - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь запустить скрипт R из Python. Rscript train.R находится в той же папке, что и Jupyter Notebook. В этой папке установлен рабочий каталог.

import subprocess
try:
    subprocess.check_call(['Rscript', 'train.R'], shell=False)
except subprocess.CalledProcessError as e:
    print(e.output)
    print(e.returncode)
    print(e)
    print(e.stderr)

Я получаю CalledProcessError:

None
1
Command '['Rscript', 'train.R']' returned non-zero exit status 1
None

Я попытался установить аргумент shell=True и попытался установить аргумент cwd=os.path.dirname(os.path.realpath("train.R")) как уже упоминалось здесь.

Команда Rscript train.R прекрасно работает, если я открываю консоль в папке.

Что я делаю не так?

1 Ответ

2 голосов
/ 20 января 2020

Я бы порекомендовал вам использовать Popen вместо

import subprocess
try:
    pro = subprocess.Popen(['Rscript', 'train.R'], shell=False)

    stdout, stderr = pro.communicate()

    print(stdout)
    print(stderr)

При этом вы сможете получить свои ошибки или выходные значения из подпроцесса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...